Hirdetés
- Feháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasgatni
- A luxusmárkáknak kell a bitcoin, az USA jegybankjának nem
- Letiltja az USA a politikusokat a telefonhívásokról és szöveges üzenetekről
- Nagy áttörés jön a napelemek piacán, nem kell annyi hely a paneleknek
- Belenyúlt az USA az Epic Games igazgatótanácsába, nyomoz az NVIDIA
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Milyen routert?
- Jelszókezelők
- Mozilla Firefox
- KAÜ/Ügyfélkapu – már elérhető a kétfaktoros hitelesítés
- Tényleg betilthatja a TP-Linket az USA
- Mikrotik routerek
- Feháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasgatni
- Vivaldi (böngésző)
- PHP programozás
Új hozzászólás Aktív témák
-
vlevi
nagyúr
válasz Szancsó #10012 üzenetére
Ennél szebb, amikor azt kérdezed tőle, hogy
string szo = "NY";
if szo.Contains("Y") {
...
}
És nem megy be az if-be, te meg lesel, mint vak a moziban, aztán rájössz, hogy az alapértelmezett culture info magyar, ezért az nem egy N és egy Y betű, hanem Ny, és abban nincs külön Y
-
vlevi
nagyúr
válasz ReSeTer #9825 üzenetére
A ShowDialog feladata éppen az, hogy várjon a felhasználó reakciójára, és addig az alkalmazás más részét ne tudd elérni, amíg az a dialog ablak kinnt van. Más programnyelveken ezt ShowModal -nak hívják.
A Show() -ra kinn kellene maradnia, ott valami más dolog lehet, ami miatt bezáródik.
Mi lenne ennek a képernőnek a feladata? Mert, ha a nevéből ítélve csak egy progresbar szerű megjelenítés, ami kiírja, hogy hol jársz, arra nem kell külön formot létrehozni.
Sokféle megoldás létezik, arra, hogy kijelezd a futás állapotát a felhasználó számára. -
vlevi
nagyúr
Kétdimenziós tömb lesz az, amit te keresel. Vagy, pontosabban, egy olyan tömb, aminek az elemei int[] tömbök.
attól még nem lesz 3 külön változód, de külön tudsz majd rá hivatkozni, a sorszámukkal.tombom[0][9]=7;
Ez a legelső array-nek a 9. elemébe beleírja a 7-et.Ha jól írtam le, mert most telefonról nem tudom ellenőrizni.
-
vlevi
nagyúr
"kiderül, hogy nem is olyan kicsi feladat. "
Inkább az, hogy olyan nagyok már ezek a fejlesztőkörnyezetek, annyira összetettek, hogy ismerni kell a keretrendszert. Legalább azt a részét, amit használni akarsz. Mert pl. hiába dolgozik valaki tizenvalahány éve C#-al, ha nem használt WPF-et, akkor neki is kínai az XAML. Talán annyi előnye van csak veled szemben, hogy jobban rááll a szeme a C# nyelvre, és ezért könnyebben megérti a megoldást."Teljesen jó ez is, "
Csak ne felejtsd el valahol inicializáláskor 1-re állítani aScaleX
-et, mert különben a0= -0
nem sokat csinál -
vlevi
nagyúr
válasz martonx #9555 üzenetére
"5.0-tól kezdve meg elhagyták a core-t a nevéből, és már csak .Net 5.0-nak hívják a zavarokat elkerülendő."
Ha így nézzük, akkor pont, hogy zavaró. Aki járatlan a témában, azt hiheti, hogy az a 4.6 továbbfejlesztése...Én egyébként pont a napokban frissítettem otthon a VS2019-et, és abban Asp.Net Core-nek hívják, és külön van a .Net Framework.
De a framework kiválasztásánál már valóban úgy van, ahogy mondot, lehet választani, de az 5-s nek a nevében nincs benne a core. -
vlevi
nagyúr
Newtonsoft tud dynamic-t csinálni a jsonbol.
Tényleg nem célszerű sűrűn használni, de, ebben az esetben talán ez a jó megoldás.
A dynamicnal le tudod vizsgálni mindegyik részét, hogy null-e vagy sem, ha tömb, hány eleme van, satöbbi.
Nekem is volt olyan, ahol a httppost után visszakapott json a végeredmény függvényében más és más volt.[ Szerkesztve ]
-
vlevi
nagyúr
válasz drsanya #9420 üzenetére
Akkor még nem volt LINQ.
Én sem szeretem használni a var-t, de a LINQ használata esetén nem tudod, hogy milyen típusú ojjektumot ad vissza. Sokszor csak egy IEnumerable interfészt, aminek az elemei valamilyen ideiglenesen összeállított classból vannak.
Ha pl. két listát kapcsolsz össze azonosító alapján, és azokból kell neked valami."célszerűbb lenne ha ciklusokat használva LINQ helyett."
Igaz is, meg nem is. Ha elkezd ciklusokat írni, akkor azzal lesz tele a kód a tényleges feldolgozás helyett, és abban is lehet hibát véteni. Ha leír egy egysoros LINQ kifejezést, akkor azzal egy sorban meg van oldva a keresés.
Ha ciklusokkal operálsz, akkor neked kell felvenni a végeredmény változót, gondoskodni a megfelelő sorrendben való kereséshez, satöbbi.
Az viszont igaz, hogy kezdőként meg kell ismerni az alapokat, ezért néha jó, ha használja, de a LINQ egyes esetekben sokkal optimálisabb.
Harmadrészt viszont lehet ülni félórákat egyetlen gomblenyomás nélkül, mire kiagyalod a megfelelő LINQ szintatkikát ahhoz, hogy pl. két listából összeválogass magadnak valamit. -
vlevi
nagyúr
válasz joysefke #9369 üzenetére
Háát, pl., ha MSSQL, és LINQ, akkor az pont meg tudja oldani, hogy beleszövi a where feltételbe. Persze, ha úgy kezdesz hozzá az egészhez.
Meg még inkább, de ebbe már ne menjünk bele, egy valódi rendszerben nem így van megoldva a bejelentkezés, de egy beadandó feladatnál ez még elmegy. Ha ez volt a feladat, akkor ez volt.
Persze, ha egy kicsit is komolyabb lenne a dolog, akkor az egyik rest requestnek annak kellene lennie, hogy jó-e a felhasználónév/jelszó. Ezt nem a kliens oldalon kell eldönteni.Jelen esetben is csak annyi a lényeges, hogy a response data-ban benne van-e a felhasználónév, jelszó.
Csak így nagyon csúnyán (bocsi, telefonon nincs VS telepítve )
valami ilyesmit akartam mondani.if (response.Data.where(x => x.username.equals(edituser.text) && x.pass.equals(editpw.text)).firstordefault != null)
{
ShowMessage("Helyes válasz, nyalhat :)");
}
[ Szerkesztve ]
-
vlevi
nagyúr
Android pl. kifejezetten tiltja a fő GUI szálon történő http műveleteket. El sem hajlandó indulni.
Ott pl. a programból való kilépéskor a mentést, felhőbe feltöltést is külön service-ben érdemes (kell) megírni, ami vár a Wifire, és csak akkor kezdi el a feltöltést, függetlenül attól, hogy a felhasználó már rég kilépett az alkalmazásból. -
vlevi
nagyúr
Méginkább. Biztos voltam benne, hogy C#-ban is van valami közvetlen megoldás a képernyőmásolatra.
Az üzenetküldő nem rossz dolog, de, aki nem számít rá, hogy ezek üzenetek, és bizonyos sorrendben dolgozza fel a rendszer, azt érhetik meglepeétsek. pl. jelen esetben, ha előtte van egy minimize window üzenet -
vlevi
nagyúr
válasz Ablakos #8859 üzenetére
Nem csak itt, de bárhol beírhatod a paramétereket név szerint.
Akkor jó, ha egy metódusnak több paramétere van, esetleg némelyik default értéket tartalmaz, és nem kötelező megadni. Ilyenkor, ha nevesíted a paramétereket, akkor te is jobban átláthatod, hogy melyik paraméternek milyen értéket adtál át. -
vlevi
nagyúr
Ez így biztosan nem jó. Ha az utolsó if, vagyis a holnap+3=1 nem teljesül, mindenképp üres lesz a két elem.
Vagy az egészet egymasba ágyazott if else szerkezetekbe rakod, vagy a switchcase ilyen esetben jobb.
Vagy előre feltöltést egy constans tömböt az eredményekkel, és csak abból választasz.
Arra is vigyázz, hogy a dayofweek angol területén vasarnap az 1, Magyarországon a hétfő. Itt is érdemes használni a culture paramétert. -
vlevi
nagyúr
válasz DrojDtroll #8486 üzenetére
"Egy mérési fájl így 8MB"
Gzip
Persze lehet, hogy nem lesz sokkal kisebb, és az is lehet, hogy a nagyságrendeken nem változtat, de láttam már olyat, hogy volt, amit a zip, rar, vagy egyéb, veszteségmentes tömörítések a tizedére, vagy még kisebbre össze tudták rántani. -
vlevi
nagyúr
"Egy kezdőnek jobb a részletesebb leírás,"
Csak lehet, hogy megriad a mennyiségtől, és bele sem mer kezdeni.
A Reiter féle könyv viszont tananyagként vezet végig, a legfontosabb dolgokon.
Amikor már azon túl vagy, akkor bele lehet mélyedni a részletekbe, ha kell, specializálódni, ASP, MVC, WPF, ... irányokba. Ahhoz már tényleg érdemes az általad is említett könyveket elővenni. -
vlevi
nagyúr
Az async kulcsszót arra találták ki, hogy ne neked kelljen kézzel írogatni a task.wait-et. Persze ezzel részben elrejti előled a C# a valódi működést, ami kavarodást tud okozni akkor, ha az ember nincs tökéletesen tisztában az async működésével.
Ha te várod meg a task lefutását, akkor csak csak a task fut egy külön szálon.
Azonban onnantól kezdve, hogy async-t használsz, minden átmegy egy másik threadre, vagyis, nem a program fő szálán fut, és csak akkor tér vissza a program fő szálára, ha a te metódusod teljesen lefutott.
webes alkalmazásnál, MVC-nél ez egy jó dolog, mert a fő thread csak korlátozott számú webrequestet tud egyszerre kiszolgálni, és, amíg minden a fő szálon fut, addig a többi webes kliens csak vár. Pl. van egy fél másodperces adatbázis műveleted, akkor ez azt jelentené, (async nélkül), hogy a webszervered fél másodpercenként 1-1 klienst tudna csak kiszolgálni. async használata esetén a teljes metódushívás egy új threadben folytatódik, a webszerver fő szála szabaddá válik, és fogadhatja a következő kérést a kliensektől. -
vlevi
nagyúr
válasz DrojDtroll #8307 üzenetére
Nem ástam bele magam C#-ban a kép kezelésbe, de egy tippem lenne, használj egy másik, átlátszó képet az eredeti fölött. Kábé, mint egy új layert. Ezen rajzold a vonalat, és csak ezt a képet frissítsd. Amikor a felhasználó befejezi a rajzolást, elég akkor rátenni véglegesen az eredeti képre a vonalat.
u.i.: Elindítottam a VS-t, és úgy látom, a pictureboxnak van Image, és BackgroundImage propertyje. Szerintem érdemes kipróbálni, hogy a "rendes" képed a backgroundimage-ben van, és a rajzolást az image-ben csinálod, és amikor készen van, akkor bemásolod az image-be.
Vagy, nem is kell bemásolni, mert, csak egy vonalat kell rá húzni. -
vlevi
nagyúr
válasz Peter Kiss #8248 üzenetére
Ez elmentem, mert sok helyen tudnám alkalmazni.
-
vlevi
nagyúr
Androidra már írtam pár mórickaprogit, semmi komolyat, de valahogy eszembe nem jutott volna olyan programnyelvben, és olyan keretrendszerrel elkezdeni fejleszteni, amelyiknek nincs semmi köze a végeredményhez.
Ezalatt azt értem, hogy próbálkozott sokat a Microsoft a Xamarinnal, a közös fejlesztőplatformmal, csaképpen a Microsoftnak nincs mobil platformja
A Xamarint csak azért próbálták valahogy előszedni, hogy aki más platformra fejleszt, az lehetőleg próbálja már meg lefordítani az appját Windows Phone-ra is. Nem láttam még ilyen embert -
vlevi
nagyúr
Akárki akármit mond, ez a legjobb könyv , amit programozó használhat
-
vlevi
nagyúr
válasz BTminishop #8049 üzenetére
Próbáltad már vertikális stackpanelbe rakni a horizontális paneleket, és abba a kockáidat?
Nem ismerem a WPF-t, de máshol ez szokott lenni a megoldás.Még esetleg a droidos gridlayout jutott eszembe, ott ezt úgy oldottam meg, hogy a gridlayout oszlopszámát változattam, és a gridlayout annyi sorba szervezte a feldobált elemeket, ahányra szükség volt az oszlopszámhoz.
Nem tudom, WPF-ben van-e ehhez hasonló.[ Szerkesztve ]
-
vlevi
nagyúr
válasz martonx #8038 üzenetére
Nekem az egyik bajom az a WPF-el, hogy valami irgalmatlanocsmány módon jeleníti meg a szöveget.
Gondolom azért, mert már nem a WindowsXP-s GDI grafikus megjelenítést használja, hanem Directwrite-ot, de egy átlagos LCD monitoron szinte fáj elolvasni azokat az összevissza álló, elmosódott szövegeket.
Értem én, hogy technológiai fejlődés, mert hardveres gyorsítás, de, ha ennyivel rosszabb a végeredmény, akkor nem ér semmit az egész. -
vlevi
nagyúr
Win10-re (de 8-asra is ) van jóhéhány valutaváltó app, ami a startmenüben élőcsempeként működik. Elvileg. Aztán, hogy az élőcsempék működőképessége mennyire reális, és mennyire nem, az már megítélés kérdése. Pl. az OTP-s alkalmazás, ha ross kedve van, akkor napokkal el van maradva árfolyam frissítés ügyben.
-
vlevi
nagyúr
válasz Tatus75 #7529 üzenetére
Szerintem csak annyit, hogy a c gyökérbe nem enged írni.
Nekem a d meghajtón lévő temp-be létrehozta az xml-t, a c gyökérbe pedig exception-t dobott :System.UnauthorizedAccessException occurred
HResult=0x80070005
Message=A következő elérési úthoz való hozzáférés megtagadva: „c:\xx.xml”. -
vlevi
nagyúr
válasz Flowtation #7333 üzenetére
Ha még nem volt, akkor Reiter István könyvét mindenképpen érdemes letölteni, és olvasgatni.
Konzolos dolgokat nem kell lebecsülni, a nyelv alapjainak megtanulásahoz tökéletes az is. Aztán, majd, ha kisujjból kirázod ezekety, akkor mehet a wpf xaml bohóckodás.
[ Szerkesztve ]
-
-
vlevi
nagyúr
string az tényleg elég dúúúrva lehet, de ha beírod, hogy
var szam=0; (int32 lesz)
var szam=0.0; (ez double)
De ha simán el tudom képzelni, hogy van két overloaded metódus, az egyik int-t ad vissza, a másik stringet, és ha nem figyelsz a paraméterezésnél, akkor a var walami=metodus(); a rosszabbikat fogja neked választani.
De elég az is, ha double helyett int adattípust definiál a var k=0; és nem érted, miért számol baromságot. -
vlevi
nagyúr
válasz alratar #7165 üzenetére
Linq-nál elkerülhetetlen a használata, mert nem tudod a visszaadott tipust.
De az észnélnküli, mindent var-al veszek fel, majd a fordito megoldja, sem jó, mert nem tudod mi micsoda.
Főleg, ha hosszu ideig használod azt a változót, amikor már a harmadik helyre adod át paraméterként, akkor elveszel az ismeretlen tipusokban. Lehet, hogy rossz overload metodust hiv majd meg, vagy te azt hiszed, hogy double, mikozben a fordito csak int tipusként hozta létre, satöbbi.
Egy foreach-en belül a var item in collection teljesen rendben van. -
vlevi
nagyúr
válasz zulu_mester #7152 üzenetére
7063 hozzászólásban említett Reiter István könyvet tudom ajanlani. Netről letölthető.
Igaz, a C#6.0 ujdonságai nincsenek benne, de az alapok megtanulásához nagyonjó. -
vlevi
nagyúr
válasz gyurkikrisz #6833 üzenetére
Az előttem írók jól mondják. Az ok pedig az, hogy a lessons-t referenciakét adod át mindegyik day objektumnak, emiatt fizikailag ugyanarra a lessons ojjektumra mutat mindegyik day.lessons a megoldás a copy.
-
vlevi
nagyúr
Össze kell joinolni a két listát.
[link]
Csináltam egy mórickaprogit, ami ugyanezt csinálja.class Program
{
class Dolgozo
{
public String nev;
public int ID;
}
class Projekt
{
public int dolgozoID;
public int projekt;
}
static void Main(string[] args)
{
List<Dolgozo> dolgozok = new List<Dolgozo>();
dolgozok.Add(new Dolgozo { nev = "Béla", ID=1 });
dolgozok.Add(new Dolgozo { nev = "József", ID=2 });
dolgozok.Add(new Dolgozo { nev = "István", ID=3 });
dolgozok.Add(new Dolgozo { nev = "Lajos", ID=4 });
List<Projekt> projektek = new List<Projekt>();
projektek.Add(new Projekt { dolgozoID = 1, projekt = 10 });
projektek.Add(new Projekt { dolgozoID = 3, projekt = 5 });
projektek.Add(new Projekt { dolgozoID = 4, projekt = 7 });
var projektlista = from dolg in dolgozok
from proj in projektek
where dolg.ID == proj.dolgozoID
orderby proj.projekt
select new { dolg.ID, dolg.nev, proj.projekt }
;
foreach (var item in projektlista)
{
Console.WriteLine(item.ID+" "+item.nev+" "+item.projekt);
}
Console.ReadKey();
}
}A lényeg középen van, a projektlista-ban
var projektlista = from dolg in dolgozok
from proj in projektek
where dolg.ID == proj.dolgozoID
orderby proj.projekt
select new { dolg.ID, dolg.nev, proj.projekt }
;[ Szerkesztve ]
-
vlevi
nagyúr
-
vlevi
nagyúr
C-ben a string az valóban egy karaktertömb volt még, ott lehetett ilyenekkel játszani.
De a C#-ban a string egy objektum, aminek a kezelését elég komolyan eldugja előled a fordító. Ahogy előttem is írták, egy string sosem változik meg, legfeljebb cserélődik.ha pl. leírod ezt
string s1="abc";
s1="def";akkor nem azt fog történni, amire számítanál, hogy az s1-nek a három karaktere lecserélődik három másik karakterre. Ehelyett az s1 megy a levesbe, létrejön egy új string objektum, def tartalommal, és az s1 változó innentől kezdve erre az újonnan létrejött string objektumra mutat.
A stringbuilder, amit adam014 említett, az annyiban más, hogy nem gyárt mindíg új string változót, csak belül gyűjti, mit variál a program a betűkkel, és csak végén, amikor a string értékére szükség van, akkor állítja elő.
-
vlevi
nagyúr
-
vlevi
nagyúr
"Ez a namespace dolog még sötét folt nekem"
Semmi varázslás nincs benne. Csúnyán fogalmazva olyan, mintha az egyes classok külön alkönyvtárakban lennének, azért, hogy az egyforma/hasonló nevű classok ne keveredjenek össze.
Ha nem használnád a forráskód elején a usingot, akkor minden elé ki kellene írni a névtér teljes nevét, nem csak a classt. Példának okáért a console is azért elég csak a console-t kiírni, mert a programod úgy kezdődik, hogy using System; Enélkül a konzolra mindíg úgy kellene hivatkozni, hogy System.Console.
Vagy például a List class a System.Generic.Collections-ban van. Tehát ennek a teljes neve System.Generic.Collections.List."cw majd TAB, TAB" Ja, és a ReadLine() ?
[ Szerkesztve ]
-
vlevi
nagyúr
válasz trisztan94 #5467 üzenetére
Igen, ez igy van. Akkor lehet szivas a dologbol, ha te mas tipust szeretnel, de automatikusan a fordito berak valamit. Pl az elobbi peldaban int-et, de a kesobbiekben erre, mint double lenne szukseg.
-
vlevi
nagyúr
válasz zsambek #5391 üzenetére
amit én írok 4-5-6 sorban, azt te egy sorban elintézed!
Nagyon sok esetben errol is szol a c# nyelv. Mivel uj progamnyelv, a megalkotasakor figyelembe tudtak venni az elmult 50 valahany ev programozoi tapasztatait. Ezzel nem fenyezni akarom a c#-ot, de ami treny, az teny. Pl Amig nem ismertem, en sem ertettem a leirasokmalapjan, mire jo a linq, de azota megertettem a lenyeget, es ennek tukreben mar nagyon hasznos dolognak tartom. Tenyleg rengetegszer elfordul, hogy adathalmazokbol a korabbi nyelvekben csak egymasbaagyazott forciklusok tomkelegevel lehetett kibogaraszni az informaciot, itt viszont nehany sorral megvan. Raadasul a nyelv gondoskodik a legoptimalisabb feldolgozasrol, amirol a programozo szinte mindig el fog feledkezni.
Nem mellesleg en is csak lesem karma hozzaszolasit, mert a c#-hoz en is csak nagyon keveset konyitok. Erdeklodo amator szintjen vagyok. Nezegetem, neha egyket aprosagot kiprobalok benne, de mivel a melohelyemen nem hasznaljuk, igy nehez benne melyebben elmelyulni. Az alapfogalmak egyreszerol hallottam, de eleg keveset tudok ertelmes egessze osszerakni.
-
vlevi
nagyúr
válasz trisztan94 #5379 üzenetére
Az nem lenne jo megoldas, hogy a kiiras elott keszitenel egy listat a kiirando elemekrol? Tehat mar a legelejen, a legelso kiiraskor feltoltenel egy listat azokkal az indexekkel, amik azt tartalamznak, hogy mit kell kovetkezokent kiirni. Ezt a listat pedig mindig torolhetned, es mivel az mar a veletleszeru indexeket tartalazza, mehetsz sorban rajta, midnit kiirod a legelso elemet, es ki is torlod. Kovetlezo korben megint az elsot.
Amikor ezt toltod, akkor ott egyszeruen egy megnezhetned, hogy van-e az az elem. -
vlevi
nagyúr
válasz tototos #5371 üzenetére
Idisposable classoknal erdemes a usingot mindig hasznalni.
En egyszer nagyon megszivtam egy kepkonvertalo progimmal, ahol a kepeket nem usinggal hasznaltam, es parezer kep atkonvertalasa kozben elszallt out of memroyval 8G ram mellett!
Usingba rakva 3-4M volt a max memoriahasznalata a proginak. -
vlevi
nagyúr
Az a baj, hogy igazad lehet a Pascal szó kiejtése kapcsán. A baj csak az, hogy ezeréves hagyománya van, hogy Basiccel, majd Pascallal foglalkoztak nagyon sokáig az iskolákban. Most van egy új programnyelv, de a feladatok ugyanazok. Ezzel viszont, hogy írjál egy qsort progit, vagy kérd be a személyi számot, ezzel nem nagyon lehet a C# nyelvi lehetőségeit tanítani
-
vlevi
nagyúr
válasz K_Gabor #5075 üzenetére
A stringmuveletekkel igy az a baj, hogy mindegyik stringmuvelet eredmenye egy uj string, es a regi feleslegesse valik. Nagyon lassu es memoriazabalo, meg akkor is, elsore ezt nem erzed. Talan a stringbuilder hasznalataval jobb a helyjzet, de akkor sem celszeru stringben, ami raadasul unicode string, tehat 2 byteos is lehet. Mi volt ennek az oka, es miert nem list<byte> -ban taroltad?
-
vlevi
nagyúr
kicsit tovább tartott, mint gondoltam, de ez sikerült ennyi idő alatt:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace oraperc
{
class Program
{
static void Main(string[] args)
{
DateTime[] datumok = { DateTime.Now, DateTime.Now.AddHours(8), DateTime.Now.AddSeconds(77) };
foreach (var item in datumok)
{
Console.WriteLine(item.oraperc());
}
Console.ReadKey();
}
}
static class MyExtensions
{
public static string oraperc(this DateTime d)
{
int hh = d.Hour;
int mm = d.Minute;
return hh.ToString("D2") + ":" + mm.ToString("D2");
}
}
}A végeredmény:
17:21
01:21
17:23[ Szerkesztve ]
-
vlevi
nagyúr
válasz Pttypang #4938 üzenetére
A datumnak vannak ora, es perc propertyjei, en azokat olvasgatnam, lehet, hogy jobb, mint konvertalgatni stringbol.
Sot, lehet, irnek egy haromsoros extnesion methodod, oraperc neven, ami az orat es percet kiolvasva, osszerakna stringben. Es akkor mindenhol hivatkozhatsz ra. -
vlevi
nagyúr
válasz Bobrooney #4887 üzenetére
Hát, azért nagyon is számít.
A Winforms tulajdonképpen a windows 1.0 óta megszokott vezérlőelemekkel operál, ami viccnek tűnik, de mégiscsak igaz. Textbox, listbox, nyomógomb, satöbbi.
A Silverlight az ugyanaz, mint a WPF.
Hát, hogy melyik a nyerő út? Tudja a rák. Sajnos a Microsoftnál sem tudják, csaponganak összevissza, a Silverlightot pl. évek óta nem fejlesztik, a Win8-ban bemutatkozó metro felületről sem bizonyosodott még be, hogy az a jövő útja. Pc fórumon, tomshardveren megjelent már olyan is (aminek a valóságtartalmát ellenőrizni nem tudom), hogy ezen is kavarni fognak a következő windowsban. -
vlevi
nagyúr
válasz jbauer05 #4858 üzenetére
Sot, ha ne, vagy biztos benne, hogy szamotmirtak a textboxba, akkor a tryparse hasznalata a javasolt.
A tryparse ui. booleant ad vissza, es out vaktozoban a parseolt erteket, es false, ha nem sikerutl az atalakitas. tryparse nelkul nagyon ronda hibauzenettel szall el a program.
Bocs, de telefonrol irok, nem biztos, hogy eltalalom.
If int.tryparse(text1, out i1)&&int.tryparse(text2,out i2){
if i1<i2{ jo lesz }
else { nagyobb }
}
else { nem szamot irtak be} -
vlevi
nagyúr
válasz #51177472 #4779 üzenetére
Szerintem, ha kiolvasod a labelből, mi van beleírva.
if (!int.TryParse(label2.text,i){
i=0;
}
i++;label2.Text = i.ToString();
A tryparese az i változóba beleírja a kapott textből kiolvasott numerikus értéket, ha sikerült a konverzió, és true-val tér vissza. Ha a konverzió nem sikerül, akko rnem ír a kimeneti változóba, és false-t ad vissza.
[ Szerkesztve ]
-
vlevi
nagyúr
válasz MATEO6600 #4763 üzenetére
Létre kell hozni egy másik bitmap obejktumot, és abba átmásolni. Most nincs előttem csak táblagép, a pontos metódusnevet most ezért nem tudom megmondani.
Csak ne felejtsd el a régi, már nem használt, eredeti képet felszabadítani, pl. a korábban tárgyalt using használatával.[ Szerkesztve ]
-
vlevi
nagyúr
válasz Peter Kiss #4748 üzenetére
És szükséges is használni, mert vannak esetek, amikor az automatikus garbage collection nem működik.
Egyszer írtam egy kép átméretező móricka alkalmazást magamnak, nagyon egyszerű app volt, végigment a file listán, fileból betöltötte a képet (ami egy új kép objektum), átméretezte, lementette. Csakhogy, mivel ezervalahány kép volt, elszállt out of memoryval, mert a képet nem dobta el a C# automatikusan. -
vlevi
nagyúr
válasz Mister_X #4325 üzenetére
var s = Console.ReadLine();
Ezzel deklarálva van az s változó. A var csak egy könnyítés, amikoris a readline eredménye határozza meg a deklarált változó típusát. Írhattad volna helyette a string s=Console.ReadLine(); -t is.
A var-al csak akkor van szívás, ha valami miatt benézed azt a típust, amit a fordító ilyenkor felvesz. Pl. te egy double típust szeretnél, és arra számítasz, hogy az lesz belőle, de a fordító csak int-et vesz fel, és ilyenkor a matematikai műveletek csúnyán félremennek, mert mindent kerekít.Az int.TryParse-nak pedig két outputja is van. Az egyik a visszatérési értéke, ami boolean, itt adja vissza, hogy sikerült-e a konverzió vagy sem. A konverzió végeredményét pedig a második paraméterben kapod vissza.
-
vlevi
nagyúr
Azt kérdezném, hogy csak én nem találom, vagy tényleg nem lehet Bitmap-et átméretezni?
Természetesen új Bitmapet tudok csinálni az új mérettel, és ebbe beletenni az eredetit, de én pont azt szeretném, hogy az eredeti képet méretezzem át. -
vlevi
nagyúr
válasz kingabo #4145 üzenetére
Kollégám hülyéskedik, és a pácsó szóban nincs c betű
Ahogy a Sony márkanév sem tartalmaz n -t"Ezért írom mindig, hogy "StringComparison.InvariantCulture" kell használni!"
Ott csak Equals és ilyenek vannak. Startswith, indexof, ... megoldható vele valahogy? Nem ismerem a Stringcomparison class-t, ezért kérdezem.[ Szerkesztve ]
-
vlevi
nagyúr
válasz Neil Watts #4033 üzenetére
"ha a lista első számhármasának harmadik tagját szeretném elérni "
Kicsit átcsavartam, és az orderby helyett írtam belőle linq-t, ami után már elő lehet szedni a harmadik elemet. Természetesen, ha van harmadik elem. Mert ha nincs, abból exception lesz...A változás:
var sorrend = (from x in listam orderby x.ertek1 select x);Aztán már egyszerű:
var harmadik= sorrend.ElementAt<Sor>(3);
Console.WriteLine("{0} {1} {2}", harmadik.ertek1, harmadik.ertek2, harmadik.ertek3);u.i.: Igazat megvallva, arra nincs szükség, hogy a "var sorrend = listam.OrderBy(x => x.ertek1);" helyett linq kifejezést használjunk, mert a listam.orderby extension is ugyanazt az IEnumerable-t adja vissza, mint amit a linq-val kapot, és ugyanúgy mehet rajta az ElementAt. Kipróbáltam működik mindkét verzióban.
[ Szerkesztve ]
-
vlevi
nagyúr
Közben látom, más is rajzolt valamit. Közben megszületett az én megoldásom is: Kiemelttem vastaggal az egyetlen lényeges részt, a sorbarendezést.
var sorrend = listam.OrderBy(x => x.ertek1);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sorrendezo
{
struct Sor
{
internal int ertek1;
internal int ertek2;
internal int ertek3;
}
class Program
{
static void Main(string[] args)
{
var listam=new List<Sor>(){
new Sor{ertek1=1,ertek2=5,ertek3=7},
new Sor{ertek1=3,ertek2=7,ertek3=9},
new Sor{ertek1=2,ertek2=5,ertek3=4},
new Sor{ertek1=5,ertek2=3,ertek3=1}
};
var sorrend = listam.OrderBy(x => x.ertek1);
foreach (var item in sorrend)
{
Console.WriteLine("{0} {1} {2}",item.ertek1,item.ertek2,item.ertek3);
}
Console.ReadLine();
}
}
}A végeredmény :
1 5 7
2 5 4
3 7 9
5 3 1[ Szerkesztve ]
-
vlevi
nagyúr
És ha nem három különböző listába rakod, hanem egy listába, ahol mindegyik elem egy olyan struct (vagy ojjektum, mindegy), aminek három mezője van? Akkor mehet a list.orderby.
Megpróbálom gyorsan lerajzolni.
-
vlevi
nagyúr
válasz Peter Kiss #3966 üzenetére
Igazad van, kipróbáltam, tényleg így van.
-
vlevi
nagyúr
válasz Neil Watts #3964 üzenetére
Hát, igen, ilyenekre van a Linq, hogy az ember ne az ilyen kereső, sorrendező, satöbbi kódokra pazarolja az energiát.
De ha ez egy suli feladat, akkor gondolom a tanár nem venné jó néven az ilyenfajta megoldástusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Termekkereso
{
class Termek
{
internal double Ertek;
internal double Suly;
internal string Nev;
}
class Program
{
static void Main(string[] args)
{
Termek[] Termekek =
{
new Termek { Ertek = 10, Suly = 5, Nev = "lila" },
new Termek { Ertek = 15, Suly = 22, Nev = "lila" },
new Termek { Ertek = 20, Suly = 4, Nev = "lila" },
new Termek { Ertek = 22, Suly = 15, Nev = "Joli" },
new Termek { Ertek = 27, Suly = 7, Nev = "Joli" },
new Termek { Ertek = 30, Suly = 59, Nev = "Joli" },
new Termek { Ertek = 40, Suly = 9, Nev = "karton" },
new Termek { Ertek = 45, Suly = 1, Nev = "karton" }
};
double keres = 22;
Termek talalat = (from x in Termekek where x.Ertek == keres select x).First();
if (talalat == null)
{
Console.WriteLine("Nincs találat");
}
else {
Console.WriteLine("Találat {0} {1} ", talalat.Nev,talalat.Suly);
}
Console.ReadLine();
}
}
}[ Szerkesztve ]
-
vlevi
nagyúr
Megmondom az őszintét, nem értem a feladatot
Az output minta teljesen összezavart.
Mert, ha ki kell írni a sorok, az oszlopok összesenjét, az az output állományban max két sor, plusz 1 a végösszeg, és kész, valami ilyesmi"110,85 150,25 383,54 96,43 -40,29 -135,52 96,99 24,10
19,60 121,07 545,68
686,35
"
És, ha már 10 karakter szélesen kell, akkor a mintában miért nem úgy van?
Külön szopatás jelleggel van tört szám az első sorban?
Jó, tudom, hogy az a sorok és oszlopok száma, de ha már a táblázatban szóközzel vannak elválasztva a számok, akkor joggal feltételezhetném, hogy ez is egy tört szám, és nem kettő
Szóval mehet a házi feladat kiadás javításra[ Szerkesztve ]
-
vlevi
nagyúr
Ahogy előttem írák, nem kell létrehozni előre fix mérettel a tömböt.
static void Main(string[] args)
{
int[] tomb;
Console.Write("Tömb mérere? :");
string s= Console.ReadLine();
int meret = int.Parse(s);
tomb = new int[meret];
Random veletlen = new Random();
for (int i = 0; i < tomb.Length; i++)
{
tomb[i] = veletlen.Next(10,100);
}
foreach (var item in tomb){
Console.WriteLine(item);
}
Console.ReadLine();
}Másik dolog, hogy programozástechnikailag nagyon csúnya és veszélyes hogy bekéréskor nem egy függvény adja vissza a bekért számot, hanem valahol beállít egy változót.
[ Szerkesztve ]
-
-
vlevi
nagyúr
"Ezzel nagyon gyorsan és igénytelenül át lehet hidalni a problémát."
Igen, ezért folytattam úgy, hogy változóba nem szívesen tenném én sem.Amúgy pedig azért kell néha elérni, mert időnként az "A" formról indítom a "B" formot, és jó lenne onnan néha néminemű dolgot elérni. Persze át is lehet adni paraméterként, van eset, amikor az az átadandó valami egy folyamatosan változó érték, és mire a "B" formon szükség van rá, addigra már más az értéke, mint a "B" form indításakor.
-
vlevi
nagyúr
Közben megtaláltam, hogyan lehet levadászni egy formot.
private TForm getForm<TForm>()
where TForm : Form
{
return (TForm)Application.OpenForms.OfType<TForm>().FirstOrDefault();
}Ennek alapján a formom elejére betettem egy property-t, ami visszaadja saját magát.
static internal FormEgy instance { get {return (FormEgy)Application.OpenForms.OfType<FormEgy>().First();} }
Természetesen a kezelő oldalon meg kell nézni, hogy létezik-e a form, de ez azthiszem természetes.
-
vlevi
nagyúr
Feljebb írod az int trackértéket.
a programba teszel egy public static int trackertek változót, azt folyamatosan tudod majd írni, olvasni.
De, ha nagyon tudományos akarnék lenni, akkor egy csak olvasható property-t tennék oda, ami mindíg kiolvasná a trackbar értékét.
Még pontosabban a formon csinálnék egy olvasható public property-t, ami ugyanezt csinálja.
Viszont én meg azt nem tudom, hogy ha a program tetszőleges részéről el akarom érni a form1-et, akkor azt hogyan tudom megtenni? Nem a class-t, hanem az abból létrejött példányt. Mert ehhez az kellene. Delphiben tudom, mert ott minden form ojjektumhoz fel volt véve egy, a nevével megegyező változó, és amikor létrehoztuk a formot, akkor abba az objektumba tároltuk le.
De C#-ban nem így van, ott a form úgy indul, hogy new Form1(); , oszt csókolom, nincs sehova lerakva az objektum. -
vlevi
nagyúr
"A lehető legkevesebb mágiával kell élni szerintem"
Én ezt csak arra akartam írni, hogy a személy nevét ki akarja írni a console writeline-al, vagy egyéb helyen van szükség rá, ahol a ToString-et használja a C#, ott ez lehet a megoldás. Természetesen átlagos esetben jobb, az, ami te írtál, hogy lehetőség szerint használjunk mindent a helyén."Igaziból nem is tudom szerver oldalon van-e tisztán natív keretrendszer"
Második futtatásra már az
Mert a JIT elrakja a lefordított kódot. Engem igazából csak az zavar, hogy ez a lefordított kód nem marad meg. És minden alkalommal, amikor pl. elindítom az ATI Catalystot, vagy a Samsung KIES-t, akkor az idő nagyrészét az viszi el nap mint nap, hogy a JIT kódot lefordítsa a gépem. Vagy rosszul gondolom, és megmarad valahol a lefordított kód, pl. a gép kikapcsolása után? Asszem nem.[ Szerkesztve ]
-
vlevi
nagyúr
Na, közben rajzoltam magamnak egy code snippetet, ami pont úgy működik, mint pl. a gyári foreach. beírom, hogy met, aztán tab-tab és kész. A foreachből másoltam, minimálisat kellett rajta átírni.
Ha valakinek kell, felraktam a dropboxra, csak be kell másolni a dokumentumok mappába, a visual studio 2010 (12, kinek mi van), könyvtárába, pl.
C:\Users\VLevi\Documents\Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets -
vlevi
nagyúr
"Ráadásul az altgr meg a b sincs túl messze egymástól."
Messze van, mert az már kétkezes kombináció. És pont az alt+shift váltogatást akarom elkerülni...
De ez csak egy olyan felvetés volt, hogy ha van rá valami 1×ű, akkor jó. Ha nincs, akkor nincs."A begin-endnél rosszabb megoldás meg szerintem kevés van "
SQL-ben is dolgozok, ott is begin end van, ezért vagyok úgy vele, hogy marhára kézre áll.
Olyan ez, hogy egyszer írtam egy levelet valakinek, és kábé ötödikre tudtam leírni a (most se sikerült ) selejt szót. 5-ből négyszer select lett belőle -
vlevi
nagyúr
válasz MrSealRD #3810 üzenetére
De, használom. Viszont egy sima eljárásra nem találtam. pl. arra, hogy
void bizbasz
{}
Annyira kényelmentlen, hogy Delphiben hamarabb beírom a begin end párost, mint ezt a két karakter... Bezzeg a múlt század végén, amikor még nem volt magyar billentyűzet, milyen szuper is volt, őú volt a szogletes zárójel, és ŐÚ a kapcsos... Pontosvesszőhöz sem kellett altgr, annak csak annyi a szerencséje, hogy közel van egymáshoz a kettő, azt már megszoktam együtt lenyomni.
-
vlevi
nagyúr
Igazat megvallva, ilyen dolgokra jobb a lista, mint a tömb. Sosem tudhatjuk előre, hány felhasználó lesz.
List<Szemely> tag2 = new List<Szemely> { new Szemely("András"), new Szemely("Béla"), new Szemely("Kázmér"), new Szemely("Dezső"), new Szemely("Mátyás"), new Szemely("Irma") };
tag2.Add(new Szemely("Jolán"));
foreach (var ki in tag2)
{
Console.WriteLine(ki);
}
Console.ReadLine();Viszont most én is kérdeznék. Van arra lehetőség Visual Studioban, hogy a {} és pl. a <> karaktereket valami gyorsbillentyűvel beírjam? Magyar billentyűzeten marha hülye helyen vannak, altgr-el kényelmetlen. Állandóan váltogatni a magyar és angol között meg mégszarabb.
[ Szerkesztve ]
-
vlevi
nagyúr
Ha azt szeretnéd, hogy a consolra a felhasználó nevét írja ki, akkor overrideolnod kell a ToString metódust. Mert alapfelállásban a class neve íródik ki.
Itt pedig néhány módszer a tömb feltöltésére, és kiírására.
class Szemely
{
string Nev;
public Szemely(string neve)
{
Nev = neve;
}
override public string ToString() {
return Nev;
}
}
class Program
{
static void Main(string[] args)
{
Szemely bela=new Szemely("Béla");
Console.WriteLine(bela);
Console.ReadLine();
Szemely[] tagok = {new Szemely("András"),new Szemely("Béla"), new Szemely("Dezső"), new Szemely("Kálmán"), new Szemely("Irma") };
for (int i = 0; i < tagok.Length; i++)
{
Console.WriteLine(tagok[i]);
}
Console.ReadLine();
foreach (var valaki in tagok)
{
Console.WriteLine(valaki);
}
Console.ReadLine();
}
} -
vlevi
nagyúr
Úgy kell kezdeni, hogy file new project, consoleapplication. Akkor kapsz egy main-t, ami indul a progi futtatásakor.
namespace ConsoleApplication1
{
class Szemely
{
string Nev;
public Szemely(string neve)
{
Nev = neve;
}
internal void Kiir()
{
Console.WriteLine(Nev);
}
}
class Program
{
static void Main(string[] args)
{
Szemely Bela=new Szemely("Béla");
Bela.Kiir();
Console.ReadLine();
}
}
}[ Szerkesztve ]
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Futás, futópályák
- Windows 11 - HP Pavilion – 15 cc516nh (2LE41EA) laptopon Intel I3-7100U TPM2.0
- Path of Exile 2
- Apple asztali gépek
- De mennyi az annyi?
- Kémia topic
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Szólánc.
- További aktív témák...
- AKCIÓ!!! GAMER PC: RYZEN 9 5900X + RTX 3060 12GB GDDR6! GARANCIA/SZÁMLA!!!
- BONTATLAN Új Iphone 16 PRO 128Gb - 1TB Független 1év Apple GARANCIA Deák Térnél Azonnal Átvehető.
- BONTATLAN Új iPhone 16 PRO MAX 256-512GGB Független 1év Apple GARANCIA Deák Térnél Azonnal Átvehető.
- Tamron SP 70-200mm f/2.8 Di VC USD G2 objektív ( Nikon )
- Azta! Yoga Slim 7 Prémium Ultrabook 14,5" -40% AMD Ryzen 5 7640S 16/512 RADEON 760M 2GB 2,9K OLED
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Axon Labs Kft.
Város: Budapest