- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Azonnali alaplapos kérdések órája
- Milyen belső merevlemezt vegyek?
- Kormányok / autós szimulátorok topikja
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Milyen notebookot vegyek?
- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- Milyen SSD-t vegyek?
- HP notebook topic
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
Új hozzászólás Aktív témák
-
-
pmonitor
aktív tag
válasz
Alexios #10133 üzenetére
int x = 0x55;
object obj = x;Itt "obj" szted. hány byte-os(bites)? Elmondom. x86-on 4 byte-os(32bites), x64-en 8 byte-os(64 bites). x64-en miért is foglal le 64 bitet a fordító? Azért, mert az "obj" referencia típus(gyakorlatilag egy mutató). A mutatók pedig 64 bites programban 64 bitesek.
De ez azt is eredményezi, hogy amit "beletesznek", azt mind ebbe a 4 vagy 8 byte-ba kell beleerőszakolni. Akár érték, akár referencia típus. Referencia típusoknál ez nagyon 1szerű, mivel "obj" is referencia típus. Érték típusoknál már nem ilyen 1szerű a helyzet. Mert itt az érték típus teljesen más típus, mint a referencia típus. Erre találták ki azt, hogy ilyen esetben létrehoznak példányosítanak 1 referencia típust, amibe belecsomagolják az érték típust(jelenleg 1 int típust). Így oldják meg, hogy 4 vagy 8 byte-ba "beleférjen" akár egy 32 byte-os érték típus is(mert a bedobozolt típus teljesen más memóriaterületen helyezkedik el).
Ennél a posztomnál itt is létrejön az object(ami ugyebár referencia típus), csak egy másik memória területen.public void TorlunkHaTudja()
{
if (adat is ITorol)
(adat as ITorol).delete();
}
Tehát van egy érték típusunk("Valami"), és van egy C#-on keresztül nem megfogható(megcímezhető) referencia típus, ami a "Valami"-nek a másolatát tartalmazza. A Main()-ben lévőgenTip.TorlunkHaTudja();
a "Valami" másolatán(bedobozolt példányán) hajtódik végre. Igen ám!! Csak mivel ezt a bedobozolt "Valami"-t nem tudjuk elérni C# kódból, így nem tudjuk az érték típusú "Valami" mezőit megváltoztatni(így az "ertek"-et sem. Gyakorlatilag azt lehet mondani, hogy a nem működő, vmint. az én módosításommal kiegészített kód is majdnem karakter szerint ugyanarra az asm-ra fordul(tehát ugyanazt csinálja). Csak az általam módosított változatban "o"-n keresztül C# kódból is el tudjuk érni a bedobozolt változatot, amit a nem működő változatban nem tudunk megtenni.
Boxing után x86 esetén az int 8 byte-ot foglal le a rendszer az 4 byte-os "int"-nek, míg x64 esetén 12 byte-ot foglal le egy 1-szerű, 4byte-os int típusnak!!
A boxing által létrejött referencia típusokat a GC takarítja el, miután már 1 referencia sem mutat rájuk.
Sajnos az alap könyvek is csak az érték és referencia szerinti paraméter átadást tárgyalja. Ami másik témakör. De ezt a másik témakört is 1szerűbb megérteni az általam vázolt programozási szemlélettel. Ezt egész röviden össze lehet foglalni:
1: Az érték típusok, és a referenciák(mutatók) alapesetben érték szerint adódnak át. Tehát érték típusú paraméter esetén az egész típus másolódik át.
2: A referencia típus esetén csak a referencia(mutató) másolódik át. Az itt levő kód esetén ezért lehet az elvileg "konstans" memóriát átírni. Ha a string érték típus lenne, akkor a "konstans" memóriát nem lehetne átírni, mert az eredeti stringnek csak egy másolatával dolgozna ez az algo.
3: Referencia szerinti paraméter átadásnál(ref vagy out) érték típus esetén az érték típusra, referencia típus esetén a referenciára mutató "pointer" adódik át.
Sztem ezek magától értetődő dolgok. Ezeket(mint látható) asm-ben be lehet bizonyítani. Magas szinten(C#), csak az ellentmondásokból(sok ellentmondásból) lehet következtetni, hogy ez így van, ahogy leírtam.
Sztem. nem nehéz megérteni. -
pmonitor
aktív tag
válasz
Alexios #10081 üzenetére
futtasd le ezt a kódot is és nézd meg az outputot, gondolom a nyelv maga se tudja miről beszél:
int x = 1;
Console.WriteLine(x is object);
Ez valami vicc? Megnézted, hogy mire fordul? Megmutatom:bool b;
int x = 0x11;
b = x is int;
ugyanez ASM-ben:05465EF5 mov dword ptr [ebp-3Ch],1
ezt mégegyszer kiemelem:mov dword ptr [ebp-3Ch],1
Ezzel fordítási időben(ha létezik a változó), akkor azt mondja:
Ha valaki megkérdezi, hogy 1 változó Object-e, akkor 1szerűen mond azt, hogy igen. Tehát már fordítási időben "beleégeti a kódba", hogy true-t adjon vissza. Ez ugyanaz, mintha ezt írnád:bool b = true;
object obj = b;
Console.WriteLine("{0}", obj);De ez is ugyanarra fordul:
bool b = true;
08455EEE mov dword ptr [ebp-3Ch],1
int x = 1;
Ezek az MS-es fiúk nagyon rafkósak ám!!Bármiféle ellenőrzés nélkül kiíratják, hogy true!!
Ilyen "csalással" könnyű azt mondani, hogy minden object...
Na de nézzük meg, hogy mi is történik akkor, amikor 1 érték típust beleteszünk egy objectbe:bool b = true;
int x = 0x55;
object obj = x;
object obj2 = x as object;
Console.WriteLine("{0} {1}", obj, obj2);Ez a következőre fodul:
int x = 0x55;
05175F21 mov dword ptr [ebp-3Ch],55h
object obj = x;
05175F28 mov ecx,4E0C8D0h
05175F2D call CORINFO_HELP_NEWSFAST (0300300Ch)
05175F32 mov dword ptr [ebp-48h],eax
05175F35 mov ecx,dword ptr [ebp-48h]
05175F38 mov eax,dword ptr [ebp-3Ch]
05175F3B mov dword ptr [ecx+4],eax
05175F3E mov ecx,dword ptr [ebp-48h]
05175F41 mov dword ptr [ebp-40h],ecx
object obj2 = x as object;
05175F44 mov ecx,4E0C8D0h
05175F49 call CORINFO_HELP_NEWSFAST (0300300Ch)
05175F4E mov dword ptr [ebp-4Ch],eax
05175F51 mov edx,dword ptr [ebp-4Ch]
05175F54 mov ecx,dword ptr [ebp-3Ch]
05175F57 mov dword ptr [edx+4],ecx
05175F5A mov edx,dword ptr [ebp-4Ch]
05175F5D mov dword ptr [ebp-44h],edx
Console.WriteLine("{0} {1}", obj, obj2);Ebből ezeket a sorokat emelném ki:
05175F2D call CORINFO_HELP_NEWSFAST (0300300Ch)
05175F49 call CORINFO_HELP_NEWSFAST (0300300Ch)
Ezekben a sorokban látszik, hogy 1 új object jön létre. Boxing történt. De ezek már nem érték típusok, hanem obj-ba és obj2-be bedobozolt int-ek. Ezek már referencia típusok, amiknek a mezőjében int van. És természetes, hogy vmi érték típust dobozolnak be 1 referencia típusba(obj, obj2), akkor az már referencia típus. Ha ellenőrizné is a program, hogy tényleg object-e az ősük, akkor is nyilván true-t adna vissza, hiszen ezek object-ek. Az más kérdés, hogy azért object-ek, mert bedobozolták őket. Ezt bizonyítja a következő kód is:05175F3B mov dword ptr [ecx+4],eax
Itt az ecx regiszterben van a típus azonosító(nevezhetjük object-nek), de az értéket[ecx+4]
-be teszi bele(itt is látszik, hogy ez már referencia típus, mert eax értékét nem az dword ptr [ecx]-be teszi, hanem az object címét kihagyva az [ecx+4]-be. Ez is azt igazolja, hogy ez már referencia típus. -
joysefke
veterán
válasz
Alexios #10086 üzenetére
Magyarázhatsz neki. Ha elolvas valamit, azt nem azért teszi, hogy a hasznos tudását növelje, hanem muníciót gyűjt a következő hónapok kötekedéséhez, ahol a "profi programozókat" (az ő szava járása) szapulja akik valami fontosnak vélt dolgot nem jól tudnak.
Ha az elmúlt éveket nem trollkodással töltötte volna, akkor akár "profi programozó" programozó is lehetne ami nyilván mindig is lenni akart. -
pmonitor
aktív tag
-
pmonitor
aktív tag
-
pmonitor
aktív tag
válasz
Alexios #10044 üzenetére
Sok mindent meg lehet csinálni.
HashSet<TesztOsztaly> htesztosztalyok = new HashSet<TesztOsztaly>();
.......
HashSet<TesztOsztaly>.Enumerator enumerator = htesztosztalyok.GetEnumerator();Aztán használható úgy, ahogy írod. Csak kérdés, hogy a gyakorlatban mennyire gyakran alkalmazzák így. Sztem. kb. zéró. Meg ettől még nem lesz módosítható...
-
pmonitor
aktív tag
válasz
Alexios #10038 üzenetére
Ha már ennyire magyarázod, hogy mind1, akkor azt sem kell elfelejteni, hogy for-ról és while-ról szó sem volt a kérdésben. Azt csak te képzelted bele. De ha már beleképzeled, akkor nézzük:
A kérdés nem úgy merülne fel, hogy for(típus), hanem úgy, hogy for(int i; i<típusok.Count;......
Na meg nem úgy, hogy while(típus), hanem hogy while(i<típusok.Count).... -
pmonitor
aktív tag
válasz
Alexios #10033 üzenetére
Így talán érthetőbb:
foreach (var item in tesztosztalyok)
{
if (item.X == 2) item = new TesztOsztaly(6); //Invalid!!!
}Ezt sem engedi. De ezért nem tökmind1, hogy foreach-t, for-t, vagy while-t használsz. Mert for és while esetén mindkét művelet valid. Vagy szted. mind1?
-
pmonitor
aktív tag
válasz
Alexios #10031 üzenetére
Ezt pláne nem értem,
using System.Collections.Generic;
namespace Teszt
{
class TesztOsztaly
{
public int X { get; set; }
public TesztOsztaly(int x)
{
X = x;
}
}
internal class Program
{
static void Main(string[] args)
{
List<TesztOsztaly> tesztosztalyok = new List<TesztOsztaly>();
tesztosztalyok.Add(new TesztOsztaly(1));
tesztosztalyok.Add(new TesztOsztaly(2));
tesztosztalyok.Add(new TesztOsztaly(3));
foreach (var item in tesztosztalyok)
{
if (item.X == 2) tesztosztalyok.Remove(item); //Invalid!!!
}
}
}
}Így már érted?
-
pmonitor
aktív tag
válasz
Alexios #10029 üzenetére
c#-ban mindennek van egy közös szülőtípusa, úgy hívják object
Kivéve, aminek nem az.
Foreachel, de igazából, while, for, tökmindegy
Nem tök mind1. Mert pl. foreach esetén nem módosíthatod magát az objektumot. Csak az objektum.akármi-t.
quailstorm:
Az osztály egy absztrakt fogalom, egy memóriaértelmezési térkép.
Innentől kezd érdekessé válni a történet. Lásd pl. itt.
-
martonx
veterán
válasz
Alexios #9853 üzenetére
Na, éppen a react native az egy ótvar szar. Én ugyan. Net-ezek, de az új MS technológiákhoz, amikből folyton jön egy új megváltó, majd jól pofára eső, végül eltünő, nagyon óvatosan közelítek. Ami xaml-ön alapul, azt különösen ferde szemmel nézem.
Mivel react native egy fos, ha már mobil cross-platform a cél, akkor szvsz flutter.
De. Net 7 után lehet tennék egy próbát a MAUI-al is,addigra hátha kinő pár gyerek betegséget.
tboy93 kíváncsian várom majd a MAUI-os tapasztalatodat, véleményedet.. Net 6-al jelen állapotában, biztos hogy bottal se piszkálnám. -
válasz
Alexios #9853 üzenetére
Van egy Xamarin Android alkalmazás a cégnél, aminek ez valamelyest utódja, kiegészítése. Részben szerintem bizonyos kódrészletek átemelhetősége volt szem elött, meg a könnyebb betanulás (szerintem hasonlóbb lehet így ránézésre a MAUI a Xamarin Androidhoz mint a Reacthoz, utóbbival nem volt még dolgom). Elég .NET heavy a cég
Egyszóval nem én döntöttem így, én ezt a feladatot kaptam, abszolválnom kell.
-
bandi0000
nagyúr
válasz
Alexios #9809 üzenetére
Köszömö, kicsit elbeszéltünk, de a 2. linked szerintem jó lehet.
Ugye itt nálunk 1-1 service 1-1 kategóriáért felel, pl számlakészítés és ebbe ugye be vannak húzva a függőségek. Akkor van a baj, ha új funkció kell, ami ide tartozik, de adatbázis tábla szinten pl csak 1 ügyfélnek lesz megvalósítva. És mivel minden céghez ugyan ez megy ki, így amikor a régiek csinálnak egy számlát, akkor az InvoiceService be akarja húzni az új repót, ami nincs meg a régieknél, és ekkor hibát dob.
Ez a service feldarabolás is max addig jó, amíg úgy áll fel a történet, hogy van egy base, illetve minden cégnek lesz egy sajátja, de onnantól kezdve, ha átfedés van, pl 6-ból 2 végnek kell valami, akkor vagy csinálok még 1 service-t ami annak a 2-nek közös, vagy crlc + v és megvalósítás mindkét sajátjába
Ezért gondoltam a methos injection-ra, mert ebben az esetben még lehet egy base, meg sok különálló, de így akkor se lenne baj elvileg, ha csak 1 lenne, és a függőség feloldása mindig akkor történne, amikor konkrétan használni akarjuk
-
Sokimm
senior tag
válasz
Alexios #9768 üzenetére
Bár mindenkinek szól a válasz, de neked lett címezve, sry
Egy dinamikus tartalmú SQL táblából táplálkozik, és grafikusan meg kell jeleníteni egy fa struktúrát, aminek a szintjei és a szinten található elemeinek darabszáma nem konstans.
Erre a táblán belül hivatkozások vannak, ki kinek a gyermeke, de nem tudunk egyéb infót.
Ciklusok futtatásával darabszámot előre definiálni lehetne, ha strukturált lenne a fa, de van ahol a 4. mélységben ágazik 100 felé, van ahol egy szakaszon a 2. szint szépen növekszik arányosan. Erre kellene egy dinamikus tárhely, amit előre nem foglalok le (vagy nem is deklarálom), mert lehet ma 4 array-ből megúszom, lehet holnap 30 lesz, vagy több.
Ha a két dimenziós tömbbel gondolkodom, akkor az első cím információtombom[x][9]=7;
nem tükrözi azt, amit az adott fa leszármaztató ID lehetne, amikor én adok neki "nevet".int[] arrayname4 = new int [];
Így még kell egy kapcsolótábla is, hogy melyik array melyik fő x címei alatt mit is kell "érteni".arrayname4 == tombom[1][...]
arrayname34 == tombom[2][...]
Szándékosan ugrottam 30-at, mert nem biztos, hogy a köztes elemek fa elágazások. Azok "példányok" is lehetnének, tovább nem osztódnak.A dictionary-s megoldásnak utána nézek thx! (nagyon dinamikus a méret, a sorrend, bár nem én fogom változtatni c#-ból a tartalmat, én csak "használom" az információkat)
A végén a monitoron szeretném látni.
Viccet félretéve, ha van egy arrayname34-es elágazásom, ami alá csak "begyűjtöm" az adott array alá tartozó elemeket, akkor meghívni / kiolvasni, csoportban kezelni (grafikus tábla struktúra) el tudom képzelni, de így most minden "ős" alá kell egy ciklust írnom, hogy fussa végig kik tartoznak alá. Ez így elég erőforrásigényes.Ha c# ban nem lehet, akkor még érdekelne, hogy melyik nyelv képes futás időben deklarálni változót, ennyi az érv.
js-ben lehet? Utána nézek thx!
-
martonx
veterán
válasz
Alexios #9715 üzenetére
Mac-en az egyetlen komolyan vehető C# IDE a Rider, igen ez jogos (windows-on a mellettem ülő kolléga Riderezik, én VS, hát egyelőre még a VS jobb, de a Rider se rossz, illetve van amiben a Rider messze jobb azért a pénzért pl. tesztek).
Mondjuk az ingyenes VS Code-al is konzol appok, minimal web api-k szintjén el lehet lenni. Xamarinról abszolút nincs tapasztalatom OSX-en, tegyük rögtön hozzá, hogy szvsz a Xamarin még windows-on is macerásMac-en nem lepődnék meg, ha abszolút nem is működne a Xamarinos fejlesztés.
-
joysefke
veterán
válasz
Alexios #9707 üzenetére
Nekem ezzel és ehhez hasonló generikus repositorikkal: Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application (9 of 10) | Microsoft Docs
Az a bajom, hogy az ilyen metódusok mint Update<T>(T entity) , esetleg Save<T> (vagy Upsert<T>), Delete() elhitetik a hívó oldalon, hogy ennyire egyszerű a perzisztencia, hogy meghívod őket utána a UoW-ön egy Save()-t és kész. És hogy ez mindenre működik amit típus paraméterként át tudnak adni.
Holott
-nem feltétlenül értelmezhető/működik minden lehetséges T entitás típuson az összes művelet,
-nem hívhatsz egymástól függetlenül mindenféle Repository metódust egy UoW tranzakción belül,
-illetve lehet hogy mondjuk az Update<T>(T entity) működik, de mondjuk az adott konkrét entitásra nem a mindenkire érvényes implementáció-t akarná a kliens kód hajtani.
-Az is lehet hogy van egy entitásod ami már trackelve van, mivel az egyik repository metódus impliciten előkerítette, majd a másik ráhív egy attach-ot a már trackelt entitásra. => exception, holott amit a kliens el akar érni annak van értelme és meg is valósítható lenne egy tranzakción belül (DB engedné egy megfelelő SP-vel, illetve engedné az EF is, ha ügyesen lenne megcsinálva).Ami nekem sokkal szimpatikusabb:
Kliens kód kap egy interfészt amin azok a perzisztencia műveletek vannak amelyekre a kliensnek konkrétan szüksége van.
Az interfészt megvalósító osztály EF-függő, az adott metódusa pedig közvetlenül indít EF dbcontext-et (lehetőleg DI-on keresztül szerez ehhez egy DbContextFactoryt vagy azzal egyenértékű opciót amiből Contextet lehet előállítani), közvetlenül attach-csolhat entitást és állít EntityState-t, illetve menti a tranzakciót. Tehát kihasználja az EF tényleges tudását és azt biztosítja a hívónak amire annak szüksége van, lehetőleg egyetlen hívásból.
-
Livius
őstag
válasz
Alexios #9680 üzenetére
Talán mert nyers byte tömbökből kell pl konverziókat csinálni, különböző regiszterek kiolvasására vagy írására, és jobb ha a kódban tisztán látszik mi milyen méretű, amikor ezek történnek vagy épp fizikai mértékegységekre történik valami konverzió ezekből, pl ADC mérésre.
-
don_peter
senior tag
válasz
Alexios #9673 üzenetére
Hogy valaki vagy kollektíve kaphatok e segítséget egy programozási vizsga kapcsán. Mivel arra nem tudtam érdemben készülni és nem akarom, hogy emiatt ismétlésre legyek kárhoztatva. Ma este 6 kor lesz. Az mellékes miért nem sikerült rá időt szánnom mert én beszélek és vagy elhiszi valaki vagy nem. Sajnos most csak kapkodok, amit nem szeretek, de nem akarok ezzel további időt elvesztegetni.
rosejbli : Majdnem. De ettől még muszáj kérjek segítséget. Ez van. Szégyen ide vagy oda. Túl vállaltam magam. És nem online vizsgáról van szó, de online kell feltölteni az időt intervallumban. (a vizsga program végére be fogom írni, hogy nem önálló megoldás, ha ez számít.)
-
Keem1
veterán
válasz
Alexios #9629 üzenetére
Ezt a controlt (ListView) szerintem még nem is használtam, de lecsekkolom
Igazából azért merült fel, mert PHP+HTML+CSS témában eléggé otthon vagyok (nem profi szinten), csináltam már pár hobbi web appot, amire az igénylő konkrétan natív mobilos appot akart eredetileg, és nem hitte el, hogy ami elkészült, az konkrétan egy weboldal, nem egy app. És ugye ez ráadásul ment desktob böngészőben is, nem csak mobilon.
Nyilván ez eddig mind webszerveren, böngészőben.Most a desktop app adott, amúgy .NET 5.0 a FW, a lista, a forrás API kezelése, ez mind kész.
A listát szeretném csinosítani, használhatóbbá tenni, és valahogy elfedni azt a hiányosságot, hogy ez (még) nem web app (később az lesz, talán pár év[tized] múlva).De a ListView-t megnézem, nem sűrűn találkoztam vele, így nem ismerem.
Szerk:
Rákerestem, és találtam ilyesmit.
Kb a bal oldali kép az, amit nagyjából én is össze szeretnék hozni. -
válasz
Alexios #9608 üzenetére
Én elhiszem, hogy ez a sava borsa, de én nem egy gasztronómiai csodát akarok, csak egy zsíros kenyeret. Még arra is rá kellett keresnem mijaza MVVM, nemhogy MVVM pattern.
Előttem
a hétvégea hátralévő évek, hogy megértsem ezt a kódot. Amúgy egész érdekes amit írsz (már amennyit megértettem belőle, és a kódból, bár az tök zavaró hogy mindennek ScaleX neve van, és hiába írtad nem értem mit csinál a DataContext) Szóval jó sok kérdőjel született, de legalább látom merre kéne elindulni.
Köszi!Ezek az absztrakciók tök felesleges bonyolítások. Miért nem lehet azt írni, hogy pl.
MainWindow.ScaleTransform(x,y);
?!
Ez beállítja a ScaleX és ScaleY transzformációt, az x és y értékének megfelelően. -
-
válasz
Alexios #9598 üzenetére
Köszi!
Írtam egy stopper/visszaszámláló alkalmazást, ami kb teszi a dolgát, úgy ahogy szeretném. Most megpróbálom továbbfejleszteni, hogy a súgógép-en is a helyes pozícióban jelenjenek meg a számok. Ezért kellene leprogramozni, hogy egy gombnyomásra az eredeti helyett annak tükörképet mutassa. -
Livius
őstag
-
Keem1
veterán
válasz
Alexios #9561 üzenetére
.... és #9562 fatal`
Nagyon baba
Elő is ásom a már retired (de a covid miatt le nem adott) régi céges laptopomat, amin tutira nincs ez a betegség (.Net Core) és kipróbálom rajta.
Ellenben... A régi .Netben volt olyan hogy átjárhatóság a wines és a console-os appok között. Tudtam ablakot nyitni console esetén és ablakos projectnél megjeleníthettem a console felületét is, ez az ilyen, általam írkált toolokat még kényelmesebbé tette. Ezt most nem sikerült megcsinálom. Működhet? Vagy ezt már felejtsem el?
A .Net lehet hogy őskövület, de rugalmas és mindent meg tudtam benne csinálni, ezért nehéz a váltás -
Keem1
veterán
válasz
Alexios #9554 üzenetére
Nekem már ez is egész jól hangzik. Hónapok óta elfailelt a beépített update (VS 2019 Community), így most az installerrel tettem fel, meg leszedtem a .Net 5.0-t is. Először megszokásból a .Net FW között kerestem, de a Core-nál találtam meg végül
Tesztelgetem. Eddig .Net 4.6 volt szinte mindenre nálam (mostanában meg már inkább 4.8), meglátjuk, benne vannak-e mindazok az 5.0-ban, amire nekem szükségem van. -
leslie23
tag
válasz
Alexios #9522 üzenetére
Ez konkrétan WinForms, de gondolom ebből a szempontból a WPF is hasonló lehet. Az Enabled property kapcsolása amúgy jó ötlet, így megúszható lenne a bool flag ellenőrzés az eventök elején. Az egyetlen bajom, hogy így WinFormsnál két másodpercre minden control elszürkül, ami a relatíve sok színes ikon miatt egy viszonylag erős villanó effektust jelentene.
Esetleg a Click eventek lecsatolása, majd újbóli hozzáadása szerintetek járható út, vagy ez fapados megoldás lenne? -
pmonitor
aktív tag
válasz
Alexios #9503 üzenetére
Ezért írom le már harmadszor, hogy tudni kell, hogy mit csinál az ember fia/lánya.
Az mindenképpen csak jó, ha ÉRTI valaki a működést, mert adott esetben helyre tud hozni dolgokat.
Én pl. jártam úgy, hogy 1 codeproject.com-os példában eleve elszállt a designer nézet. Hasznos volt, hogy tudtam, hogy mit kell csinálni.szerk.: mondjuk nekem aztán mind1, hogy valaki érti-e, vagy nem.
-
válasz
Alexios #9438 üzenetére
Kösz ezt kerestem
Ez a struct egy globális változó. Van ilyenből még 2-3 darabom és mindegyikkel kb ua. kell csinálom.
joysefke
Egy kicsit speciális az eset. Ezek a structok speciális "listák" egy adatbázisból olvasok bele. Majd bizonyos függvények listázzák és a structban van eltárolva hogy a GUI-n éppen hol tart a lista. Ezeket az index paramétereket módosítom.
Lehetne máshogy felépíteni?
Jelenleg ez a szerkezete:public struct myCustomList
{
public string listName;
public List<Items> items;
public int onePageElement;
public string actState;
public int ListIndex;
public int pages;
public int actpage;
public string title;
} -
Tomi_78
aktív tag
válasz
Alexios #9343 üzenetére
Szia Alexios!
Köszönöm a választ; ezzel egyúttal azt a kérdésemet is megválaszoltad, hogy kezdőérték nélküli, dinamikus tömböt hogyan lehet létrehozni.
Még javítottam a kódomon annyit, hogy a képe egy változóba kerüljön, tehát:class Deneverek
{
public int dirx,diry;
public Bitmap kepe;
};(...)
if (svsz==0) {
egydenever[i].kepe = deneverkepe1;
} else {
egydenever[i].kepe = deneverkepe2;
};
De ezek után pl. a kirajzolásban nem ismeri fel a képhez tartozó Left és Top változókat:void MainFormPaint(object sender, PaintEventArgs e)
{
for (int i=0; i<3; i++) {
e.Graphics.DrawImage(egydenever[i].kepe,egydenever[i].kepe.Left,egydenever[i].kepe.Top,egydenever[i].kepe.Width,egydenever[i].kepe.Height);
}
}Ez miért van?
És hogy miért pont SharpDevelop? Martonxnek is válaszolva: már régebben a gépemen pihen letöltve és csak most vettem elő. Az tetszett benne annakidején, hogy ingyenes és kicsi: csak letöltöd, kitömöríted és használatra kész. Nem tudom, van-e még ilyen fejlesztőkörnyezet, de nekem egyelőre bejön.Azt viszont én is sajnálom, hogy már nem fejlesztik tovább a készítői.
-
Keem1
veterán
válasz
Alexios #9301 üzenetére
Köszönöm a tanácsot, de úgy néz ki, ez is elfailel, bár ez más miatt.
Már akkor elkezdtem ijedezni, mikor még Windows alatt is belebotlott a bicskája a connection stringben átadott "version" paraméterben, aminek eddig sem PHP, sem .NET 4.5, sem Java alatt nem volt baja
Ez az én kis teszt kódom SQLite teszteléshez:
using (SqliteConnection conn = new SqliteConnection($@"Data Source=F:\chinook.db;Version=3"))
{
conn.Open();
using (SqliteCommand cmd = new SqliteCommand("SELECT `name` FROM sqlite_master WHERE type='table';", conn))
{
SqliteDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
System.Console.WriteLine(reader.GetString(0));
}
}
}
És Linux alatt ezt kaptam:
Unhandled exception. Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 14: 'unable to open database file'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteConnection.Open()
at Program.Main(String[] args) in ...\Program.cs:line 24 -
-
-
-
pelgrim_v1
tag
válasz
Alexios #8469 üzenetére
Nem tudom mire lesz szükségem. Jobbról balra ninja futos csapda atugros pont gyűjtögetos játékot akarok csinálni androidra. Amiket még kellene tudnom pl hogy xy feltételek alapján (pl 2 "biztonságos terület közötti maximum távolság. Mindig legyen egy vonal ahol a karakter elfer stb) hogyan generálja a pályát végtelenségig bizonyos időközönként xy feltétellel nehezitve (futási sebesség gyorsulása csapdák gyakorisaganak növelése) illetve felvehető egyszerhasznalatos dolgok (shuriken ellenségek ledobasara, kard barikad atvagasara, tekercsek varazslatokkal)
Amit sikerült megtanulnom megcsinálni kB csak az hogy észre vegye a karakter hogy az egy fal és ne menjen át rajta illetve ha player találkozik xy karakterrel életét vegyen el/ haljon meg. Szóval a tudásom eléggé véges
-
válasz
Alexios #8454 üzenetére
Itt tényleg arra kell gondolni, hogy 10-15 ember lesz regisztrálva és alkalom szerűen használják majd az appot.
Gyakorlatilag annyi az egész, hogy mindenki tölthet fel ajándék listát, hogy mit szeretne, a többiek meg az ő listájából választhatnak ajándékot és lockolhatják is, hogy más ne vegye ugyan azt. Illetve nyilván az ajándékozott személy azt nem láthatja, hogy ki-mit lockolt le a listáján.
Még az is lehet, hogy google-féle excelben is össze lehetne kattintgatni hasonlót.
Arra pont jó lesz, hogy gyakoroljam kicsit a .net core-t meg az ef core-t
-
Keem1
veterán
válasz
Alexios #8450 üzenetére
A probléma, hogy nem tudom, hogy az első dictionary elemei közül melyikben lesz, a keresett elemem.
Az első (kategória) kulcsainak száma 5-10 (partners, ...), ezeken belül elvben korlátlan int=>string páros lehet, de átlagosan 5-300 db.Ha tudnám, melyik kategóriában van, így keresnék:
properties["partners"].ContainsValue("blabla");
De sajnos nem tudom, hogy melyik külső dicionary tartalmazza azt a belsőt, amiben benne lesz a keresett sztring, sőt, lehet, hogy az adott kulcsszóra több kategóriából is lesz egy vagy több találat. Jól megbonyolítom, mi?
Alapból<int, string>
akart lenni, de valahol a programkódban hibánal vélte a compiler, és csak az string object-ra cserélése oldotta meg. -
initio
csendes tag
válasz
Alexios #8394 üzenetére
köszönöm a példát.
esküszöm ez már varázslat. így sem megy.
egyszerűen nem értem hogy mi lesz ezekkel az exe-kkel ha a gomb indítja el.
" googlen megtalálom " ---> napok óta éjjel nappal ezen google-zok.
itt vannak a képek a " proces start info " -s változatról, a helyzet ugyanaz: nem találja a fájlt.
érdekes a sima process.start ami DIREKT A FÁJLRA MUTAT ( lásd kép ) az sem működik.
képeket csatolom. már tényleg nincsen semmi de semmi ötletem.
-
Keem1
veterán
válasz
Alexios #7869 üzenetére
Ettől féltem én is. Fog majd utálni az, aki utánam kapja meg ennek a továbbvitelét
Hogy lehetne ezt becsületesen, szépen áthidalni?
Csináljam meg szépen a parancssoros metódusokat, ugye?Közben úgy tűnik, a legutolsóra találtam megoldást. Amúgy is van naplózás SQLite db-be, ami
MessageBox.Show()
stílusú üzenet, azokat kiszedem, és csak a naplóba megy (eddig egymás mellett volt mindkettő), így ha jól tippelek, aFromConsole()
végén lévőClose()
már nem lehet akadály, ha a hibák jól le vannak kezelve... -
j0k3r!
őstag
válasz
Alexios #7477 üzenetére
Mi köze van az oop-nak, ahhoz hogy a kódod külön fileokban van-e, vagy sem? Nekem ez most nem akar leesni.
(#7475) Chesterfield: +1 érv a külön file-ok mellett: ha valaha elkezdesz csapatban dolgozni, ahol van source control is, akkor kevesebbszer lesz majd conflict mergeléskor, amit kézzel kell feloldani.
-
válasz
Alexios #7172 üzenetére
Az is lehet, hogy rosszul emlékszem. Sokat nem C#-oztam, a linq-t meg még annyit sem használtam. Szerintem nektek lesz igazatok!
Szerk.: igen, inkább visszatöröltem a dolgokat, hogy hülyeség ne maradjon meg. Elkövettem azt a hibát, hogy nem voltam alapos és nem nézem utána. Elnézést.
-
-
#34322688
törölt tag
válasz
Alexios #6090 üzenetére
Itt van az egész forráskód:
using System ;
using System . C o l l e c t i o n s . Gene ric ;
using System . Linq ;
using System . Text ;namespace Co n sol eA p pli ca tio n1
{ c l a s s Program {
s t a t i c void Main ( s tr ing [ ] a rg s )
{Con sole . Write
( "Kérem␣ ad ja ␣meg␣ az ␣ é l e t k o r á t : ␣" ) ;
int E =
int . Pa rse ( Con sole . ReadLine ( ) ) ;
int a=0;
i f (E >= 0 && e l e t k o r < 7 ) a=1;
i f (E >= 7 && e l e t k o r < 22 ) a = 2 ;
i f (E >= 19 && e l e t k o r < 66 ) a = 3 ;
i f (E > 65 ) a = 4 ;
switch (a )
{
case 1:
Con sole . WriteLine ( "Gyermek . " ) ;
break ;
case 2:
Con sole . WriteLine ( " I s k o l á s . " ) ;
break ;
case 3:
Con sole . WriteLine ( " F el nő t t . " ) ;
break ;
case 4:
Con sole . WriteLine ( " Nyugdí ja s . " ) ;
break ;
de fau lt :
Con sole . WriteLine
(" Rossz ␣ é r t é k e t ␣ a do t t ␣meg . " ) ;
break ;
}
Con sole . ReadLine ( ) ;
}
}
}Valami miatt nem működik.
-
Dinter
addikt
válasz
Alexios #6070 üzenetére
Azt hogy tudom megcsinálni, hogy ezt berakom egy for ciklusba, és akkor legenerálja a 6 usernek jelen esetben:
string[] user+i=adatok[I].Split(':')
Azt hogy tudom elérni, hogy olyan nevű string tömböt hozzon létre, amiben benne van a 'user' és még hozzáfűzi az 'i' jelenlegi értékét?
-
Cathfaern
nagyúr
válasz
Alexios #5571 üzenetére
És olyan könyvet tudtok ajánlani, ami nem kezdő programozóknak szól, hanem C#-ra áttanulóknak? Programozással nincs problémám, viszont eddig főleg nem OOP nyelvekben programoztam (C és PHP), igaz mellette foglalkoztam C++-al meg Java-val is, de csak érintőlegesen. Viszont a haladó C#-os könyvek túl magas szintről indítanak nekem, a kezdők viszont elindítják onnan, hogy mi az a ciklus meg elágazás...
Ú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!
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Yettel topik
- The Elder Scrolls V: Skyrim
- A fociról könnyedén, egy baráti társaságban
- Kazy Computers - Fehérvár - Megbízható?
- Elden Ring
- Azonnali alaplapos kérdések órája
- Kínai és egyéb olcsó órák topikja
- Milyen belső merevlemezt vegyek?
- Villanyszerelés
- További aktív témák...
- ÁRESŐ! Dell Inspiron 3493 /10.gen i5-1035G1/8GB/512 GB SSD FHD
- Akciós áron eladó HP Elitebook 845 G7 / AMD Ryzen 5 pro-4650U/16 GB/256 SSD/14"/FHD/IPS/Gari/touch
- Szuper áron eladó dobozos Honor MagicBook 16 Series /Ryzen5-5600H/16GB/512 SSD/FHD/IPS/Garancia
- HP Zbook 14 laptop (14FHD/I7-G4/4GB/128SSD/MagyarVilágítós/AMD1GB)
- Remek áron Lenovo Flex 5 14 laptop/2in1/Touch/Ryzen i5-1135G7/8GB/512 GB SSD/14"/Gari
- BESZÁMÍTÁS! Gigabyte B450 R7 5700X 32GB DDR4 512GB SSD RX 6700XT 12GB Rampage SHIVA be quiet! 650W
- LG 55G4 - 55" OLED evo - 4K 144Hz & 0.1ms - MLA Plus - 3000 Nits - NVIDIA G-Sync - FreeSync Premium
- Azonnali készpénzes Microsoft XBOX Series S és Series X felvásárlás személyesen/csomagküldéssel
- OLCSÓ MONITOROK
- Beszámítás! Apple iPad Pro 13 2024 M4 512GB Cellular tablet garanciával hibátlan működéssel
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest