- Steven: Sokat utazó kávéfüggők ide!
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- sziku69: Fűzzük össze a szavakat :)
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Azonos árketegóriájú (105-110.000 Ft-os) relatív olcsó telefonok kamerái
- Brogyi: CTEK akkumulátor töltő és másolatai
- Magga: PLEX: multimédia az egész lakásban
- Lalikiraly: SÜNI energiaital.
- sziku69: Szólánc.
Új hozzászólás Aktív témák
-
Karma
félisten
A natúr ContinueWith-tel az a baj, hogy ha nem jól paraméterezi az ember – márpedig egyáltalán nem triviális –, akkor a folytatásként meghívott Task háttérszálon fog futni, és nem jön vissza a hívó (tip. UI) szálra. Ilyen UI piszkálásoknál ez elég kritikus.
Referenciaként, a szükséges paraméter a kontextus:
Task task2= task.ContinueWith(() =>
{
this.TextBlock1.Text = "Complete";
}, TaskScheduler.FromCurrentSynchronizationContext());Ennél kicsit egyszerűbb az async/await kulcsszavakat használni
-
Karma
félisten
válasz
trisztan94 #5296 üzenetére
Kib... ronda.
Valahogy így nézne ki C# 5-ben tisztábban:
public async void Magic() {
emptyLetterHole.Visibility = Visibility.Collapsed;
filledLetterHole.Visibility = Visibility.Visible;
draggedButton.Visibility = Visibility.Collapsed;
await Task.Delay(1500);
filledLetterHole.Visibility = Visibility.Collapsed;
goodLetterHole.Visibility = Visibility.Visible;
await Task.Delay(3000);
goodLetterHole.Visibility = Visibility.Collapsed;
emptyLetterHole.Visibility = Visibility.Visible;
}---
A TextBlocknak meg adtál nevet (illett volna nagybetűvel kezdeni), azon a néven létrejött egy property a page-en. Ott el tudod érni (vagy ha nem használod, vedd ki az x
ame-et!).
Másrészt a gomb Contentje tényleg a TextBlock lesz.
Harmadrészt meg az egész igen büdös, nem kéne minden logikát a Page-be írni...
-
Alexios
veterán
válasz
trisztan94 #5296 üzenetére
a button content vagy child/ren elemei közt(hirtelen nem emlékszem melyik van neki) ott lesz a textblock.
-
amargo
addikt
válasz
trisztan94 #5281 üzenetére
Task eseteben van olyan, hogy continuewith: http://msdn.microsoft.com/en-us/library/dd537612(v=vs.110).aspx
-
trisztan94
őstag
Egy olyan dolgot kell csinálni, hogy ha történik egy esemény, akkor el kell tüntetni valamit, megjeleníteni valamit másfél másodpercig, ha letelt a másfél másodperc azt amit most megjelenítettünk eltüntetni majd meg kell jeleníteni megint valamit 3 másodpercig, majd ha az letelt, azt is eltüntetni és az eredetileg látszó dolgot visszaállítani láthatóvá...
Na most én ezt így oldottam meg:
emptyLetterHole.Visibility = System.Windows.Visibility.Collapsed;
filledLetterHole.Visibility = System.Windows.Visibility.Visible;
draggedButton.Visibility = System.Windows.Visibility.Collapsed;
timer.Interval = TimeSpan.FromMilliseconds(1500);
timer.Tick += (arg1, arg2) =>
{
filledLetterHole.Visibility = System.Windows.Visibility.Collapsed;
goodLetterHole.Visibility = System.Windows.Visibility.Visible;
timer2.Interval = TimeSpan.FromMilliseconds(3000);
timer.Tick += (arg, arg0) =>
{
goodLetterHole.Visibility = System.Windows.Visibility.Collapsed;
emptyLetterHole.Visibility = System.Windows.Visibility.Visible;
};
timer2.Start();
};
timer.Start();Ez így nagyon csúnya? Lehetne szebben?
------
+1Van egy button objektumom, annak a gyermeke egy TextBlock:
<Button
x:Name="myButton">
<Button.Background>
<ImageBrush ImageSource="/Assets/Main/SquareBackground@2x.png" />
</Button.Background>
<TextBlock
x:Name="myButtonText"/></button>Erre a gombra rá van kötve egy Manipulation eseménysorozatra (drag and drop - started, delta és completed), ott így hivatkozok a manipulált gombra:
private void Drag_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e)
{
draggedButton = (Button)sender;
}Hogyan tudom a draggedButton-ban lévő TextBlock Text értékét megváltoztatni?
-
fatal`
titán
válasz
haromegesz14 #5294 üzenetére
Igen, épp ezért emelsz sort azelőtt, hogy kiírod az ötös indexű elemet. És így pontosan a négyes indexű után fog emelni (ami az ötödik).
-
haromegesz14
aktív tag
Lehet Én gondolkodok rosszul, de ha 0-tól megy az indexelés, és én a ciklusváltozót osztogatnám 5-el, így nem jó ha nullát kapok vissza maradéknak. Első 5. elem a 4-es indexű, tehát maradék 4, és ezt követve ugye a többi X elemre is jó lenne.
Megoldódott!
static bool otodike(int szam)
{
bool otodik = false;
if (szam%5==4) otodik=true;
return otodik;
}szam paraméterként pedig megkapja a ciklusváltozót, és így már jó is. Köszönöm szépen a segítséget!
-
haromegesz14
aktív tag
válasz
Alexios #5291 üzenetére
Igaz, jövök is a kódrészlettel. Tehát azt szeretném ezzel elérni, hogy a for ciklus változójáról ugye amit folyamatosan növel, ha éppen 5-el osztható, akkor legyen ott egy sortörés. A string tömbömet sikerült feltöltenem, csak ötössével tagolva szeretném sorokba rendezni az X elemét. Metódussal viszont csak idáig jutottam:
static bool otodikE(string[] A)
{
bool otodik = false;
for (int i = 0; i < A.Length; i++)
{
if (i%5=4) otodik true;
}
return otodik; -
fatal`
titán
válasz
haromegesz14 #5290 üzenetére
if (ciklusváltozó % 5 == 0) {
System.WriteLine();
}
//itt írod ki a maradékot -
Alexios
veterán
válasz
haromegesz14 #5290 üzenetére
és mi nem megy akkor pontosan?
Esetleg ha egy kódrészletet beraknál könnyebben tudnánk segíteni
-
Alexios
veterán
válasz
haromegesz14 #5287 üzenetére
pl. ciklussal mész végig rajta. for-nál ugye eleve ott van a ciklusváltozó amit nézhetsz, while-nál illetve foreachnél pedig egy saját változót növelsz mindig egyel.
-
haromegesz14
aktív tag
Hello!
Ismerkedek még csak a nyelvel, konzolos alkalmazások színterén, segítségeteket szeretném kérni!
Van egy string tömböm, aminek az elemeit metódussal úgy szeretnék kiíratni, hogy minden 5. elem után új sorba írja az elemeket. Hogyan tudom vizsgálni azt, hogy éppen az 5.? Maradékos osztással próbáltam, de sajnos nem jártam sikerrel. -
Karma
félisten
válasz
trisztan94 #5285 üzenetére
MediaElementtel meg lehet csinálni mindkét variációt.
-
trisztan94
őstag
válasz
ferensz #5284 üzenetére
Na szuper, én is olvasgatok más fórumokat, ott is nagyon ajánlják
---
mp3 fájlokat szeretnék lejátszani, erre két eset van:
1. Felhasználó letöltötte korábban az egész pakkot és lokális fájlokból
2. on-the-go stream-eljükItt szintén nincs lehetőség válogatni, csak mp3 fájlok vannak.
Ezt az MSDN cikket találtam erről. Ha jók az információim, elvileg csak BackgroundAudio-val lehet lejátszani mp3 fájlokat. Viszont ez a cikk arról szól, hogy úgy szólaljon meg a "zene", mintha a zenelejátszó lenne, ergo megállítja az aktuális zenét. Ezek iylen kis hangeffektek lennének csak, tehát ez nagyon nem kell.
Lehet valahogy .mp3 hangeffektek lejátszani egyszerűen úgy, hogy mind lokálból, mind online stream-ről menjen?
-
ferensz
senior tag
válasz
trisztan94 #5283 üzenetére
Én imádom a ReSharpert, szerintem a funkciói felét nem használom ki, de így is sokkal gyorsabban tudok vele haladni, mint nélküle.
-
trisztan94
őstag
ReSharper-t használ valaki? Tényleg olyan jó, mint ahogy a videóban mutatják, ennyire megkönnyíti a munkát?
Céges gépen vagyok most, ha tényleg szuper akkor beszélnem kell főnökkel, hogy vegyünk licencet + rendszergazdával, hogy rakja fel, szóval mielőtt ebbe a procedúrába belekezdenék, érdekelne a véleményetek
----
(#5282) martonxHát mondjuk ja, szarból csak szar várat lehet építeni.
Viszont azzal mindenképp kell kezdeni valamit, hogy ne egyszerre küldje el a 12 request-et, mert 10-ből 2-3* mindig előjön a memória hiba.
-
martonx
veterán
válasz
trisztan94 #5281 üzenetére
Figyi, ezt szépen nem lehet megoldani. A szervertől adat lekérésnek kellene olyannak lennie, hogy egy nagyobb json struktúrában küldje le az adatokat, ráadásul ne kelljen 12 queryt-t futtatni ehhez. Adj ide mindent, és kész. Maximum pár szűrő feltételt küldesz. Ez így végtelenül szarul lett megoldva.
Onnan kezdve, hogy a szerver oldal nem így működik, te már csak szarból tudsz várat építeni, és az sehogy sem lesz szép, és jó. -
trisztan94
őstag
A táblalekérésekkel kapcsolatban lenne egy kérdésem még
RestSharppal történik a szerverrel a kommunikáció aszinkron módon.
Ezt úgy raktam most össze, hogy van 12 RestRequest típusú változóm amelyekben a kérés paraméterei vannak (felhasználónév, jelszó, SQL query, stb).
Így néz ki egy ilyen RestRequest:
RestRequest nevekRequest= new RestRequest(hostName, Method.POST);
nevekRequest.AddParameter("parancs", "SELECT * FROM nevek");
nevekRequest.AddParameter("user", databaseusername);
nevekRequest.AddParameter("prog_ver", prog_ver);
nevekRequest.AddParameter("databasehost", databasehost);
nevekRequest.AddParameter("databaseusername", databaseusername);
nevekRequest.AddParameter("databasepassword", databasepassword);
nevekRequest.AddParameter("databasename", databasename);
nevekRequest.AddParameter("db", db);Ebből 12 van.
Ezek után mind a 12-t lefuttatomclient.ExecuteAsync(nevekRequest, NevekCallback)
Ezt szintén 12x, minden egyes Request-re.Ezek után van megint 12 callback metódusom minden egyes request-re.
private void UsersRequestCallback(IRestResponse response, RestRequestAsyncHandle handle)
{
List<Users> responseData = JsonConvert.DeserializeObject<List<Users>>(response.Content);
Debug.WriteLine("Users-firstname: " + responseData[0].FirstName);
}1. Tisztában vagyok vele, hogy ez így valami elképesztően gány, viszont így este nincs nagyon most ötletem, hogy hogyan lehetne szépen megoldani
2. Valamikor memória túlcsordulás miatt behal a szerver a 12 egyszeri request miatt, tehát valahogyan úgy kellene csinálni, hogy amikor az 1. request készen van, akkor indítjuk a 2.-at, ha az kész a 3.-at, stb. Ezt szintén hogyan lehetne szépen megoldani?
---
Végül a DeserializeObject<>-nek azt az osztályt adtam, amiből az adatbázis táblákat építettem fel, tehát:
public class Nevek
{
[PrimaryKey, NotNull, MaxLength(11), AutoIncrement]
public int id{ get; set; }
[NotNull]
public string nev{ get; set; }
}Tehát:
List<Nevek> responseData = JsonConvert.DeserializeObject<List<Nevek>>(response.Content);Az a baj, hogy az id a JSON stringben stringként van benne és a DeserializeObject meg nem tudja átkonvertálni integerré:
Could not convert string to integer:
De még ez a legkisebb probléma, mert más tábladefiníciókban van DateTime típus is.
Tehát az lenne itt a kérdés, hogy hogyan tudom convertálni a deserializeobject értékeit úgy, hogy megfeleljenek azok a megadott típus (jelen esetben osztály) típusainak? Vagy kezeljek mindent stringként oszt' csókolom? Esetleg csináljak még 12 osztályt, amikben csak string-ként vannak ugyanezek a field-ek?
-
martonx
veterán
válasz
trisztan94 #5276 üzenetére
A kedvedért kipróbáltam. Nem teljesen jól írtam. Szóval a pontos process:
1. Fogod ezt a példa json-t, vágólapra teszed:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}2. Majd fogsz egy bármilyen .cs file-t, mondjuk model.cs és Paste Special-lal beilleszted Json as Class-t választva.
3. VoliáAz ismertetett módszer egyébként XML-lel is működik.
-
Karma
félisten
válasz
trisztan94 #5276 üzenetére
Típusnak inkább List<Nevek>-et adj meg, ha már listáról van szó
-
trisztan94
őstag
válasz
martonx #5275 üzenetére
Hát én nem találtam meg azt az automatikus generálás cuccost.
Írtam egy ilyen model osztályt:
public class Nevek
{
public string id; //az id is stringként jön át
public string nev;
}És ezt csináltam:
Nevek responseData = JsonConvert.DeserializeObject<Nevek>(response.Content);
Hibaüzenet:
An exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.DLL but was not handled in user code
Additional information: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'Click4Skill_Angol.Model.Nevek' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
Mint ahogy előbb írtam, ez a szervertől visszakapott json string:
"[{\"id\":\"1\",\"nev\":\"Aladár\"},{\"id\":\"2\",\"nev\":\"Béla\"}]"
Mit csinálok rosszul?
-
martonx
veterán
válasz
trisztan94 #5274 üzenetére
Ez a DeserializeObject<dynamic> felejtős. Fix struktúrájú Json-t .Net-tel az alábbi módon illik parseolni:
1. létrehozol egy model-t a Json-nak. Ilyet a VS2013 már tud out of the box. Bemásolod valahova a Json-t, kijelölöd az egészt, jobb gomb, majd franc se tudja melyik menü melyik pontja, és már meg is kaptad a Json-nak megfelelő class-t.
2. Ezután használod a DeserializeObject<generáltobjektum> és örülsz. -
trisztan94
őstag
A megkapott Json stringgel szeretnék elkezdeni dolgozni, erre e Json.NET lib deserializer-jét akarom felhasználni.
Ebben a formában kapom meg a stringet:
[{\"id\":\"1\",\"nev\":\"Áron\"},{\"id\":\"2\",\"nev\":\"Béla\"}]
Ezt parse-olni szeretném, erre a következőt használom:
var responseData = JsonConvert.DeserializeObject<dynamic>(jsonString);
Viszont itt nem tudom, hogy hogyan tudok hivatkozni a dolgokra. Ezt a SO kérdést nézegettem, leginkább a legfelső választ.
De mivel itt több adat van, gondolom maga a responseData is egy tömb lesz, nem? (Pontosabban egy JArray tömb), tehát az lenne a logikus, ha úgy tudnék hivatkozni az első sor nevére, hogy:
responseData[0].nev
Viszont ha ezt csinálom, dll hibával kivág.
Ez az értéke a responseData-nak:
{[ { "id": "1", "nev": "Aladár" }, { "id": "2", "nev": "Béla" }]}Tehát a kérdés az lenne, hogy hogyan tudok hivatkozni valamire? Mondjuk a 2. névre a responseData-ban.
-
csiki_92
aktív tag
válasz
trisztan94 #5272 üzenetére
Köszi a segítséget!
-
csiki_92
aktív tag
válasz
trisztan94 #5270 üzenetére
Még egy kérdésem lenne. Azt hogyan tudom megcsinálni, hogy ha a program futása közben a sugárnak nem számot írok be, hanem mondjuk betűt, akkor ne lefagyjon a program, hanem írja ki, hogy "hibás karakter" és kérje be újra? A negatív számot le tudtam kezelni, de a karaktert nem.
-
csiki_92
aktív tag
válasz
trisztan94 #5267 üzenetére
Köszi a segítséget, sikerült.
-
csiki_92
aktív tag
válasz
trisztan94 #5262 üzenetére
Hibát jelez a kerulet= Math.Round((decimal) kerulet, 3); sorra, és ezt írja: Cannot implicity convert type 'decimal' to 'double'. An explicit conversion exists (are you missing a cast?).
-
martonx
veterán
válasz
trisztan94 #5263 üzenetére
Az egyik ismert táblán futtatsz egy select top 1 * from ize-t. Ez mondjuk nem szép megoldás.
MSSQL-lel lehet csekkelni az egyes SQL elemek meglétét, nem tudom, hogy ilyen ellenőrzéseket tud-e az SQLite, a helyedben megnézném a dokumentációját.
-
martonx
veterán
válasz
trisztan94 #5262 üzenetére
ok, csak akkor az egyszerű embereknek ne olyan szavakkal vagdalkozz, hogy REST API, mert attól falnak mennek. Csak annyit mondj nekik, hogy a szerver oldalt nem ártana normálisra megcsinálni. Na persze ha ez eddig jó volt droidhoz, meg ios-hez, akkor most nem a te kedvedért fognak ezen változtatni.
-
trisztan94
őstag
Úgy döntöttem, hogy SQLite-ot fogok használni lokális adatbázisként, mert mind az Android, mind az iOS verziója az appnak azt használja. Ezt a leírást követtem, név szerint a következő dolgokat használom fel: sqlite-net, sqlite-net-wp-8, SQLite for Windows Phone.
Rendesen működik is.Szeretném ellenőrizni, hogy létezik-e már egy adatbázis, ha nem, akkor csináljon újat. Ezt hogyan tudom?
Jelenleg ez a Database.Create() metódusom:
public async void Create()
{
SQLiteAsyncConnection db = new SQLiteAsyncConnection(Path.Combine(ApplicationData.Current.LocalFolder.Path, "localdatabase.db"));
await db.CreateTableAsync<Sample>().ContinueWith((results) =>
{
Debug.WriteLine("Sample table created!");
});
}Ez nem ad vissza semmilyen infót arról, hogy létezik-e az adatbázis, ha nincs, akkor létrehozza, ha van akkor nem tudom. Egyáltalán az is baj, hogy nem a solution-be hozza létre az adatbázist, hanem (ha jól értem), az app saját izolált tárhelyére, így nagyon nézegetni sem tudom VS-ból, sőt, azt gyanítom, hogy amikor újra debug módban futtatom, minden alkalommal törli az egészet ahogy van.
Tehát nekem egy egyszerű csekkolási módszer kellene, ami megmondja, hogy létezik-e már az adatbázis (+ benne a táblák), plusz valami amivel a solution explorerben is nézhető és létező dologgá tudom varázsolni. Tudtok ilyent?
-
trisztan94
őstag
válasz
csiki_92 #5261 üzenetére
Szia,
public static void kerulet(Double sugar)
{
double kerulet = 0;
kerulet = 2 * Math.PI * sugar;
kerulet = Math.Round((decimal)kerulet, 3);
Console.WriteLine("A kör kerülete:"+ kerulet +" cm");
}Ha nem castolod decimalra, akkor lefele kerekíti, tehát pl.:
double kerulet = 1.2759;
Math.Round((decimal)kerulet, 3); // -> értéke 1.276
Math.Round(kerulet, 3); // -> értéke 1.275Ha változókkal összefűzött stringet iratsz ki, akkor használd a string.Format()-ot:
Console.WriteLine(string.Format("A kör kerülete: {0} cm", kerulet));-----
martonx
"szerinted egy RESTful API mit csinál? Valami csodát? Mert az is a kapott megfelelően felparaméterezett POST, GET, PUT, DELETE http hívások alapján Json-nal (xml-lel, odata-val, whatever) kommunikál a külvilággal."Persze, tisztában vagyok vele, hogy mi az a REST API és, hogy mit tud/mit nem tud, nem is az a baj. Egyszerűen baromi rondának tartom azt, hogy SQL stringeket kell nekem küldözgetnem egy távoli dologhoz, mikor köze nincs hozzá. Utasítást küldeni rá, oszt' majd az API megoldja ahogyan megoldja, ne nekem kelljen figyelni a query szintaktikájára, stb. Mert itt ugye nem 1-2 query-ről beszélünk, hanem több százról és ha azok közül pár hibás, nincs nagyon fogalmam, hogy melyik, mert csak egy "Query failed" választ kapok rá, és emiatt azzal fog elmenni az idő, hogy ezt keresgéljem.
-
csiki_92
aktív tag
Sziasztok!
Olyan problémám lenne, hogy egy double értékét kéne kiírassam 3 tizedesjegy pontossággal, de nem tudom kerekíteni.
Itt kéne a kerulet értékét 3 tizedesjegy pontossággal megjelenítsem, de sehogy sem sikerül.public static void kerulet(Double sugar)
{
double kerulet = 0;
kerulet = 2 * Math.PI * sugar;
Console.WriteLine("A kör kerülete:"+ kerulet +" cm");
}Előre is köszi a segítséget!
-
martonx
veterán
Persze az nyilván beteg, hogy a POST paraméter egy komplett SQL query-t kell küldeni.
Csak azt jeleztem, hogy önmagában nem attól lesz jó egy megoldás, hogy egy komplett RESTful API-t kerítünk. Egy normálisan megoldott PHP /akármi fogadó a POST oldalon is teljesen jó tud lenni.
Azaz én az elvre mondtam, hogy azzal elvi szinten nincs gond. Sőt ha ezt vesszük RESTful API-t is meg lehet szarul oldani. -
Karma
félisten
válasz
martonx #5258 üzenetére
Igen, de azért mégis struktúráltabb, kontrolláltabb hozzáférést nyújtana az adatokhoz a szabad SQL futtatás helyett. Bár semmi értelme kardozni olyanokkal, akik szerint ez a megoldás rendben van.
Egyébként szerintem is megoldható WP-n simán.
trisztan94: Ennyi információ alapján egynek végülis elmegy. Bár a Synchronize-nak nem itt a helye szvsz.
-
martonx
veterán
válasz
trisztan94 #5257 üzenetére
Csöndben jegyzem meg, szerinted egy RESTful API mit csinál? Valami csodát? Mert az is a kapott megfelelően felparaméterezett POST, GET, PUT, DELETE http hívások alapján Json-nal (xml-lel, odata-val, whatever) kommunikál a külvilággal.
És miért ne tudna már WP is pont így kommunikálni a szerver oldallal?
-
trisztan94
őstag
Áh, ez az igazi b@Ƶmeg kategória
Hát nekem ne mondd, most láttam csak a MySQL adatbázisban lévő adatokat... Lekérve a users táblát, minden plain text-ként benne, mind a 7000(!!!!!) felhasználó összes adata: felhasználó, jelszó, bankkártya adatok és még sorolhatnám.
Felvetettem nekik, hogy legyenek mán' oly kedvesek, rakjanak már fel egy RESTful API-t a szerverre, mert ez így botrányos (CSAK HTTP POST requesteket lehet küldeni és egy nagyon ótvar JSON string jön vissza), de nem, nem lehet, mert így jó droidon és iOS-en, há mé' ne lenne jó WP-n....
Szóltam nekik a plain texttel kapcsolatban, kíváncsi leszek a válaszra.
-----------------
Próbálok haladni vele, megint egy olyan kérdésem lenne, hogy jól gondolkodom-e.
Készítettem egy publikus osztályt: Database.cs
Ebben van kb. 20 constans string változó, amikben a csatlakozási adatok vannak. Mind private.Van benne egy public void Synchronize() metódus amit meghívva elindul a szinkronizáció, plusz ilyen segédmetódusok, mint pl. public bool IsLoggedIn(), stb.
Ugyanebben a Database.cs fájlban (de nem a Database osztályban) vannak a lokális adatbázis tábladefiníciói, pl.:
[Table(Name = "sample")]
public class Sample
{
[Column(Name = "id", IsPrimaryKey = true, CanBeNull = false, IsDbGenerated = false, DbType = "INT(11) NOT NULL PRIMARY")]
public int Id { get; set; }
[Column(Name = "Data", CanBeNull = false, IsDbGenerated = false, DbType = "NVarChar NOT NULL")]
public string Data{ get; set; }
}Plusz még vagy 20 ilyen. Tehát egy fájlban van 21 osztály: a Database és a maradék 20 tábladefiníció.
Ezt mind én a model mappába raktam.
Az lenne a kérdésem, hogy helyes-e ez így? Ha nem, akkor hogyan lenne az?------------------
Megint más:
SQLite vagy MSSQL legyen a lokális adatbázis? Melyik jobb erre a célra?
-
amargo
addikt
válasz
Peter Kiss #5255 üzenetére
Ha pl kis betusse konvertalod, jo lesz ez.
-
Peter Kiss
őstag
válasz
thiclyoon #5254 üzenetére
Ez egy lehetőség, de pl. kis- és nagybetű miatt bukta, arra alkalmazhatsz más, de hasonló jellegű megoldást.
using (var sr = new StreamReader("útvonal a fájlhoz"))
{
var filter = new HashSet<string>();
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
if (filter.Add(line))
{
Console.WriteLine(line);
}
}
} -
thiclyoon
aktív tag
Sziasztok,
Fel vannak sorolva egy fájlban tantárgyak, valamelyik egyszer, valamelyik többször.
Hogyan kéne megoldani, hogy minden ott szereplő tantárgyat kiírassak, de csak egyszer?Úgy próbáltam, hogy kiírtam az elsőt, majd ha a következő nem egyenlő az elsővel, akkor azt tegye egy új változóba (for ciklussal), azonban így az lesz, hogy kiírja az elsőt, és az utolsót. (Feltéve, hogy az utolsó nem egyenlő az elsővel.)
Úgy is próbáltam, hogy ha az i-edik elem nem egyenlő az elsővel és a második kiírttal (tehát az utolsóval) se, akkor legyen egy harmadik változó, de így meg nem ír ki semmit.
Hogyan kell megoldani?
-
Karma
félisten
válasz
tototos #5251 üzenetére
Ettől még ne akard kódba rakni, mert az nagyon nem oda való, és amúgy is egy undorító félindiai megoldás. A resource-oknak ellenben pont ez a lényege, hogy belefordulnak az assemblydbe.
Ha resx fájlt adsz a projekthez, akkor string konstansként éred el a tartalmakat (és a solutionben egy fájl lesz, benne a két tartalommal); de olyat is csinálhatsz, hogy a solutionben külön fájlok, a kódban meg streamként éred el.
-
tototos
addikt
Egy kis programot írok, ami egy project fájlból csinál egy másikat. Az xml egy alap beállítást tartalmaz majd ebbe rakok még be elemeket és elmentem egy mappába. A C fájl pedig egy az egyben le lesz mentve egy mappába. Azért akarom a kódba rakni, hogy csak az exe-t kelljen futtatni, és ne kelljen még 2 fájlt is tárolni mellette.
-
tototos
addikt
Sziasztok!
Tudom nem a legszebb megoldás de szeretnék magában a programban tárolni egy c kódot és egy xml fájlt. Erre mi a legjobb megoldás? Hozzak létre stringeket aminek az értékei az adott fájlok tartalma lenne?
-
Elképzelhető, hogy az általam beszerzett MVVM verzió nem tartalmazza az IOC névteret?
-
Karma
félisten
válasz
trisztan94 #5244 üzenetére
"Tényleg, mielőtt hülyeségeket beszélek: Az async az külön szálon fut? Pl. a RestSharp ExecuteAsync(request, asynccallback) metódus."
Általában igen, és úgy is illik, hogy a feldolgozás minél nagyobb része menjen háttérszálon (a CLR-ben lévő Async hívások ilyenek, saját kódnál meg pl. a Task.Run-nal tudsz háttérszálra küldeni dolgokat).
Viszont ez nem kötelező! Például ha egy Task<int> visszatérési értékű metódusodban a Task.FromResult() metódust használod, a visszaadott taszk azonnal kiértékelődik és nem lesz háttérszálra váltás, meg igazából aszinkron se.-----
"Erre kellett a HTTP POST, azzal kell elküldeni a MySQL query-t"... "Na most ez így elég rossz"
Áh, ez az igazi b@Ƶmeg kategória
Szoktam látni a hétköznapokban is durva kókány munkát, de ez simán dobogós lehetne.
Mára már nagyon le vagyok merülve, úgyhogy nem tudok sokat regélni; de ha gyorsan demonstrálni akarsz, nézz utána az ASP .NET Web API 2-nek. Ezzel írhatsz egy olyan szerveroldali komponenst, aminek szép JSON/XML felülete van a mobilos klienseknek (olvasásra és írásra egyaránt megoldható), a konkrét adatbázist meg bőven elrejted.
De PHP-val se tartana sokból írni egy rendes controller osztályt, ami ilyen interfészt biztosít. Natúran se feltétlen, CodeIgniter és hasonló keretekkel meg pláne nem.
-
trisztan94
őstag
+ (#5240) Karma
Végül sikerült megoldani RestSharp-pal a dolgot, tényleg elég fáradt voltam már, azért nem ment. További pluszpont neki, hogy async a dolog, ami követelmény az alkalmazásnál.
Tényleg, mielőtt hülyeségeket beszélek: Az async az külön szálon fut? Pl. a RestSharp ExecuteAsync(request, asynccallback) metódus.
A HTTPClient-et NuGet-ről töltöttem le, de ott mindig kihalt maga a httpclient osztály valami hibával. (Most nem vagyok Windows előtt, nem tudom replikálni az esetet, ha érdekel titeket, akkor holnap elvileg lesz a kezem ügyében windows)
------
Másik dolog, MySQL adatbázis kapcsolódással kapcsolatban:
Van egy távoli szerveren egy MySQL adatbázis, illetve van az app saját MSSQL adatbázisa. A két adatbázis felépítése teljesen ugyanaz, ugyanazok a táblák/oszlopok, ezeknek sorrendje, oszlopok típusai, stb. Az összes adat a távoli szerveren van amivel dolgozni kellene, ezeket az adatokat kellene lemásolni egy szinkronizálás folyamán, tehát szinkronizálni kell az adatbázisokat. Azért van egy külön lokális adatbázis, hogy offline is működjenek a funkciók. Ha nincs semmi a lokális adatbázisban, akkor letöltünk mindent, ha vannak benne cuccok, akkor pedig ellenőrizzük a timestampeket (minden sornak van egy timestampje), ha korábbi a lokális adatbázis verziója, akkor letöltjük a szükséges dolgokat a távoli cuccról (tehát hogyha webről vagy másik OS-ről (megvan már droira és iOS-re az app, nekem az iOS forráskódja meg, de így, hogy C#-on és Javascripten nevelkedtem, kb olvasni nem tudom, egyszerűen nem értem meg mi micsoda
)), ha pedig újabb a lokális timestamp, akkor pedig feltöltjük az adatokat a távoli szerverre.
Az is fontos, hogy kiderült, hogy nem közvetlenül a MySQL adatbázissal kellene kommunikálni, hanem egy PHP scripttel. Erre kellett a HTTP POST, azzal kell elküldeni a MySQL query-t stringként + további paramétereket és egy JSON stringet ad vissza válaszként.
Na most ez így elég rossz, pár dologgal problémában vagyok, mind megértésileg, mind implementáció kérdésekben:
1. Egy senior kolléga azt mondta nekem, hogy az lenne a legjobb, ha egy web service lenne rákötve a MySQL adatbázisra, amivel közvetlenül tud szintén HTTP kérésekkel kommunikálni az app, de a C# saját LINQ Query szintaktikájával, és az objektumokat tudna visszaadni nem JSON-t.
1/a. Össze kellene állítanom egy ilyen web service demót, hogy tudjuk mutatni a megrendelő cégnek, hogy pontosan mit csináljanak. Na most itt ugye az az egyik kérdés, hogy tényleg azzal érdemes-e dolgozni,
a másik pedig, hogy hogy az istenbe néz ki egy ilyen dolog? Rá lehet-e egyáltalán rakni egy csak PHP és MySQL-t támogató szerverre? Ha igen, hogyan? Csinált már valamelyikőtök ilyet? Hogyan kezdjek egyáltalán neki ennek a dolognak?2. Hogyan kellene kb. kinéznie ennek a szinkronizációnak? Esetleg, ha valamelyikőtök csinált már ilyet, tudnátok egy nagyon primitív példát mutatni? Sajnos kötve vagyunk a MySQL-hez.
Köszönöm!
-
Lacces
őstag
Sziasztok.
Az iránt érdeklődnék, hogy van-e speciális könyvtár vagy framework, vagy akármi .NET alá, ami segit abban, hogy ismeret/tudásalapú rendszert készitsek?
Egyetemen volt ilyen kurzus, és a C alapú CLIPS-ben dolgoztunk, de ahogy kerestem a neten, nem igazán találtam a .NET alá... láttam, elég érdkes válaszokat, hogy használjunk if-else ágakat, ami szerintem elég gyatra megoldás. Vagy kiértékelő fát épiteni. Nekem a CLIPS tetszett, ahhoz hasonló fejlesztői eszközök vannak .NET alá? (tudásalapú rendszer esetén) -
tototos
addikt
Sziasztok!
Van egy string tömböm amiben elérési utak vannak tárolva. Ezeket szeretném kicsit átalakítani.
Például:PARENT-3-PROJECT_LOC/a/b/c/valami.c
helyett ez kellene
../../../a/b/c/valami.c
Lényegében a számnak megfelelő ../ kell. Van erre valami szép megoldás?Köszi
-
Karma
félisten
válasz
trisztan94 #5238 üzenetére
Pedig a HttpClient (NuGet: Microsoft.Net.Http) nagyon jól működik általában. Annyi csak, hogy az olyan headeröket, amik a bodyra vonatkoznak (a Content-Type ilyen pont) nem a Clienten és nem a HttpRequestMessage-en, hanem a String- Stream- stb. Content osztály Headersével tudod beállítani.
Telefonnal annyira nem könnyű példát vagdosni, úgyhogy majd később
-
j0k3r!
őstag
válasz
trisztan94 #5238 üzenetére
[link] (nem próbáltam wp8 alatt, csak webes környezetben, de ott működik)
mod: ha nem megy elsőre, akkor mutasd meg a kódod, hogy mit szeretnél (milyen object(ek)et) elküldeni. valamint mindenképp állíts be megfelelő ContentType-ot! (pl.: application/json, application/x-www-form-urlencoded)
-
trisztan94
őstag
Sziasztok!
Egy szimpla HTTP POST kérést szeretnék Windows Phone 8 alól küldeni kifele. Na most vagy nekem van nagyon késő, vagy nem tudom, de sehogy sem sikerül, semmi sem kompatibilis WP8-al, a NuGet csomagok 95%-a nem települ emiatt.
RestSharp-pal sem megy, sem HttpClient-el.
Ha valaki csinált már ilyet, tudna nekem egy működő példát szolgáltatni?
Köszönöm!
Egész este ezzel szoptam és 7-kor indulok munkába..
-
trisztan94
őstag
Sziasztok!
Windows Phone 8 app-ból hogyan tudok egyszerűen csatlakozni egy távoli MySQL adatbázishoz?
-
pvt.peter
őstag
Sziasztok!
Ismer vki olyan (lehetőleg) C# könyvtárat amely gráfok grafikus reprezentálására szolgál?
Fontos kikötés lenne az, hogy ez az egész egy koordináta rendszerben legyen és lehessen 1-1 pont között éle(ke)t kezelni.
Kezelje az interaktivitást, pl. lehessen rendezgetni a pontokat az élek megtartásával stb.Üdv,
Peti -
Goose-T
veterán
válasz
moseras #5228 üzenetére
Hát ha az Entity Framework-öt megkerülve akarsz adatot módosítani, akkor normális keretek között te sehogyan sem tudsz értesülni EF-ben erről. Tákolhatsz figyelő függvényeket, de hivatalos megoldás nincs rá tudomásom szerint, ahhoz a MySQL-nek kellene eventeket lődöznie az EF felé. Törekedj inkább arra, hogy minden csak a szervizrétegen keresztül érje el az adatbázist.
-
Goose-T
veterán
válasz
moseras #5207 üzenetére
Az EF csak egy library, amivel felépítheted magadnak a Model réteget. Megírod szépen a lekérdezéseket, adatrögzítéseket stb. Az így létrehozott osztályba pedig olyan eventeket raksz, amilyeneket csak akarsz. Ezt a "valaki rajtam kívül futás közben módosítja a táblát" mondatot mégis hogy értetted? Ha azt szeretnéd, hogy minden változásról értesüljön a kliens, akkor le kell rakni az adathozzáférést szervizrétegbe, és a kliensprogramod Model rétege csak a szervizzel való kommunikációban fog kimerülni, ekkor már egy kézben lesz az adathozzáférés, nem lesz olyan, hogy "rajtad kívül valaki más módosítja a táblát". SignalR segítségével pusholhatsz is adatokat a kliensnek, ha a szervizréteged adatváltoztatást hajt végre.
-
tototos
addikt
Sziasztok!
XMl editort szeretnék írni c#-ban de nem tudom hogy kezdjek hozzá.
A feladat az lenne hogy egy xml alapú fájlból kinyerni adatokat majd azokat beírni egy másik xml fájlba.
Példa:<link>
<name>Application/Demo/GUIDEMO.c</name>
<type>1</type>
<locationURI>PARENT-2-PROJECT_LOC/Demo/GUIDEMO.c</locationURI>
</link>
Az egyik fájl tartalmaz egy ilyen sort és a másik fájlba ilyen sort kellene belőle csinálni:
<File name="Application/Demo/GUIDEMO.c" path="Demo/GUIDEMO.c" type="1"/>Hogy lehetne ezt egyszerűen kivitelezni?
Köszönöm a segítséget
-
-
Karma
félisten
válasz
Flashback #5208 üzenetére
Adott a következő statikus osztály: [link]. Az ElementValue érdekes, de ott hagytam példaként két másik metódust, ami double-t vagy decimalt parse-ol ki az értékből.
A parsered így módosulhat ezek felhasználásával:
DPCO = item.Element("Data").ElementValue("PCO"),
DCaption = item.Element("Data").ElementValue("Caption"),
SConnect = item.Element("Data").ElementValue("Connection"),És ekkor kezelted azt, ha a Data vagy a PCO/Caption/Connection null.
-
ubid
senior tag
válasz
longwild #5216 üzenetére
Sajnos most a SignalR nem játszhat
nem webes megoldású lesz a kliens.
Service: A kliens nem tud hívni, (vagyis tudna, de nem akarom
) mert nem tudom, hogy hányszor kell, valamint ilyen "tök" megoldás lehetne, (hogyha már a kliensnek kell hívni) hogy megjelölöm az "olvasott" üzeneteket mindig, de szerintem ez költséges, és tényleg buta megoldás.
-
amargo
addikt
-
ubid
senior tag
Lehet picit rosszul fogalmaztam:
szóval olyanra lenne szükségem mint egy LIVE stream szolgáltatás , ami mondjuk a videót streameli és a kliensekre "szórja".
Csak nekem nem videót kéne streamelni, hanem kis adat csomagokat, de ugyan úgy folyamtosan.
Tehát: Elindítom a kliens programot, ami felcsatlakozik a service,re és folyamatosan tartja a kapcsolatot, a service pedig magától küldi állandóan az adatokat, (amit egy külső eszközről kap) lényeg, hogy nem a kliens fogja kiváltani az eseményt, hanem a serveren fog becsapódni egy esemény, amiből tudja, hogy most küldenie kell adatot.
-
-
martonx
veterán
Én így 2014-ben akkor már inkább egy asp.net web api-t javasolnék. Ennek a meghívásához aztán biztos nem fog kelleni semmilyen extra class library.
"Nekem pedig az kéne, hogy a WCF küldje folyamatosan az adatokat." - ezt kicsit részletezhetnéd. Oké, hogy nincs gombnyomás, de valami azért csak indukálná az adat küldéseket nem? Egy esemény, egy adat megváltozása valahol... Ha már Web API, akkor mondjuk SignalR-rel elég szépen le lehet kezelni ezeket az értesítéseket.
-
ubid
senior tag
Sziasztok!
Egy kis tanácsot szeretnék kérni:
Alapvetően valami féle service-t kell építenem:
Az egyik oldalon folyamatosan jönnek az adatok, másodpercenként akár 30-40 is, amit egy apró konvertálás után azonnal át kell küldenem a másik oldalra, tehát ennek folyamatosnak kell lennie.
WCF-el meg lehet ezt valahogy oldani?
Kicsit belekavarodtam a WCF-be, én azt úgy értelmezem, hogy mondjuk a WCF oldalon ki tudok szolgálni valakit, ha a kliens oldalon mondjuk a felhasználó megnyom egy gombot, de ehhez gombnyomás szükséges ugyebár (mondjuk) , tehát nem folyamatos.
Nekem pedig az kéne, hogy a WCF küldje folyamatosan az adatokat.Valaki tud tanácsot adni, hogy, vagy mivel lehetne megoldani ?
(mindenképpen valami olyasmit szeretnék, amihez semmiféle "class library referencia" nem kell, hanem csak mint a WCF-et egy service linkkel felveszem és ámen. ) -
Alexios
veterán
válasz
Flashback #5208 üzenetére
lényege az, hogy megfogod tudni hivni xelementen is, mintha "saját" metódusa lenne. Pontosabban olyan típushoz tudod meghívni ami elé a "this" szót adod a metódus paraméterlistájában
trisztani94: helyzettől függően null coalescing pl, vagy akár extension method
Én ahol lehet null coalescinget használok mert sokat tud röviditeni a kódon, főleg ha több null ellenőrzés is lenne az if-en belül, az itt csak annyi hogy: xyz = x??y??z pl.
-
-
moseras
tag
Sziasztok!
Próbálom megérteni az Entity Framework 5/MVVM light/MySQL hármast. Első körben abban kérnék segítséget, hogy miként implementáljam azt, hogy az adatbázisban változás történt, és a ViewModel-em ezt észrevegye.
Tehát nem arra gondolok, hogy a programom kívül valaki más módosítja az adatbázist, és azt vegye észre, hanem ha én módosítom, akkor azt lássam. Az DbContext-ből származó xxxEntities osztályban nem látok változás értesítő event-et. Tehát akkor nekem kell egy plusz réteget felhúzni a ViewModel és az Entities közé ?
Eddig azt hittem, hogy maga az Entities-em a Model réteg, ezek szerint nem ?
Más: ha valaki rajtam kívül futás közben módosítja a táblát, azt az Entity framework észreveszi ?
Imi.
-
Karma
félisten
válasz
Pttypang #5205 üzenetére
Ez erősen feladatfüggő, de én a VM-re szavaznék ismét. Annyira figyelj majd oda, hogy a ListPicker nem lehet üres, egy alapértelmezett elemet mindig tartanod kell benne, valamint az elemeknek helyesen kell az Equalst implementálnia, mert az alapján kezeli a kiválasztást.
-
-
Karma
félisten
válasz
Pttypang #5203 üzenetére
Mondtam hogy beszédes
Minden benne is van.
Amúgy ránézésre csak az a baj, hogy kisbetűvel írtad a bindingnál a property nevét. Érzékeny ám rá.adam014: A null coalescinggel csak az a baj, hogy a LINQ2XML-nél nem segít. Egyrészt a két oldalon azonos típusnak kell lennie (XElement vs String = aláhúzás), másrészt az ellen nem véd, ha a GetElement lánc közepében null valami. Sajnos.
Én amikor utoljára így parsoltam XML-t, csináltam extension methodokat, amik kicsit lerövidítették a nullchecket. Pl. string ElementValue(this XElement element, string childName, string defaultValue = null), ami a default értéket adja vissza akkor is, ha az element null, meg akkor is, ha az adott névvel nincs leszármazott tag
-
System.Windows.Data Error: BindingExpression path error: 'azon' property not found on 'Jaratlista' 'Jaratlista' (HashCode=97635555). BindingExpression: Path='azon' DataItem='Jaratlista' (HashCode=97635555); target element is 'System.Windows.Controls.TextBlock' (Name=''); target property is 'Text' (type 'System.String')..
System.Windows.Data Error: BindingExpression path error: 'listanev' property not found on 'Jaratlista' 'Jaratlista' (HashCode=97635555). BindingExpression: Path='listanev' DataItem='Jaratlista' (HashCode=97635555); target element is 'System.Windows.Controls.TextBlock' (Name=''); target property is 'Text' (type 'System.String')..
Oh, barátságos -
Alexios
veterán
válasz
Flashback #5199 üzenetére
Vagy ott van még a "null coalescing" operátor(nemtudom hogy van magyarul
) azaz pl:
valami = (string)b.Element("valami") ?? String.Empty
Tehát ha a (string)b.Element("valami") null, akkor itt egy üres stringet állit be pl neki, ha meg nem null, akkor meg azt ami az értéke lenne -
trisztan94
őstag
válasz
Flashback #5199 üzenetére
Ez most egy nagyon általános példa lesz, de remélem megérthető.
// A szam1 változó értéke null lesz, mivel nincs értéke.
int szam1;
int szam2 = 3;
// Itt mivel egy null értéket akarunk felhasználni, kapsz egy nullReferenceException-t, ami azt jelenti,
// hogy null-ra hivatkoztál, tehát a semmire hivatkoztál.
Console.WriteLine(string.Format("A két szám összege: {0}", szam1 + szam2));Ezt ki lehet védeni egy try-catch-el:
try
{
int osszeg = szam1 + szam2;
}
catch
{
// Elkapjuk a kivételt, lekezeljük a hibát, hibaüzenetet írunk ki.
MessageBox.Show("Kérem adjon értéket az első számnak!");
}Vagy ahogy martonx írta, lehet null-ra csekkolni egy if-el:
if(szam1 != null)
{
// Csinálunk valamit.
}
else
{
MessageBox.Show("Kérem adjon értéket az első számnak!");
}
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Milyen billentyűzetet vegyek?
- Spórolós topik
- Milyen okostelefont vegyek?
- Kompakt vízhűtés
- LEGO klub
- Steam Deck
- Adguard Premium (Android, PC és egyéb rendszerekre, valamint böngészőkhöz)
- Beszántaná a marketingért felelős részlegét az Intel
- Autószerelők, autószerelés
- Apple asztali gépek
- További aktív témák...
- X1 Carbon 9th 14" 4K UHD+ IPS i7-1185G7 32GB 512GB NVMe ujjlolv IR kam gar
- Apple watch series 9 45mm újszerű állapotban, 100% akku 2027.05.20-ig Media Markt gari
- Latitude 7410 27% 14" FHD IPS i5-10310U 16GB 256GB NVMe ujjlolv IR kam gar
- DELL 7490 i7-8650U 8 Gb 256 GB EU BILL WIN11 PRO - ÁFÁS SZÁMLÁVAL
- Dual Sense Kontroller - Death Stranding 2: On the Beach Limited Edition
- BESZÁMÍTÁS! MSI B450M R7 5700X 16GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Chieftec 600W
- BESZÁMÍTÁS! MSI B450 TomaHawk R5 5600X 32GB DDR4 512GB SSD RTX 3060 XC 12GB Rampage SHIVA 600W
- BESZÁMÍTÁS! Gigabyte B760M i5 13400F 16GB DDR4 512GB SSD RTX 3070 8GB Pure Base 500DX fehér 650W
- LG 27GR95UM - 27" MiniLED - UHD 4K - 160Hz 1ms - NVIDIA G-Sync - FreeSync Premium PRO - HDR 1000
- Csere-Beszámítás! Asus Rog Strix GTX 1080Ti 11GB GDDR5X Videokártya!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged