The Iron Maiden Geplaatst: 13 februari 2006 Geplaatst: 13 februari 2006 Hallo, Ik heb een vraagje over de programmeertaal delphi. Misschien staat dit topic in de verkeerde forum, maar ik kon geen beter alternatief vinden vandaar... Ik heb een class TDEELNEMER gedefineerd, met bijbehordende properties en functies. Nu wil ik een array van de class DEELNEMER defineren. Hiervoor gebruik ik de instructies: Type TDEELNEMERS:Array of TDEELNEMER; Var DEELNEMERS:TDEELNEMERS; Hoe moet ik de variabele DEELNEMERS instantieren, zodat ik elk element van het array afzonderlijk kan benaderen? Welke delphi goeroe weet raad? The Iron Maiden VU+ duo met OpenPli, CCam 2.11 op 78 cm triax wok en multiblock op Astra 19.2, 23.5 en 28.2 -- Hier had uw reclame kunnen staan --
Psychosammie Geplaatst: 13 februari 2006 Geplaatst: 13 februari 2006 Leuk probleem. Volgens mij heeft Delphi een al een datastructuur om classes in te proppen. Zoiets als een TList. Er worden uiteraard pointers opgeslagen. Dus dan zal het wel zoiets worden als TDeelnemers[4] as TDeelnemer. Ik zal morgen eens in de boeken duiken. Resistance is futile you will be assimilated Those who would give up essential liberty, to purchase a little temporary safety, deserve neither liberty nor safety. Benjamin Franklin (1706-1790) Mijn vrijheid eindigt niet waar jouw angst begint!
Psychosammie Geplaatst: 14 februari 2006 Geplaatst: 14 februari 2006 OK. Voor de liefhebbers dan. Er zijn 2 manieren: - Een dynamisch array zoals jij voorstelt; - Met een TClassList; Code: VarTA : Array of TDeelnemer //Dynamisch arrayDN : TDeelnemer //Je objectBegin Setlength(TA,20); //Plaats voor 20 elementen DN := TDeelnemer.Create //Maak object DN.property := eenwaarde //Vul je object TA[5] := DN //Zet object in array op positie 5//doe andere dingen DN := TA[5] //Object ophalen ShowMessage(DN.property) //Inhoud van object tonen//bij afsluiten prog alle array objecten vrijgeven!!!! For I := 0 to 19 do Begin DN := TA[i]; DN.Free; End; Of met een TClassList Code: Var DN: TDeelnemer; TC: TClassList; Begin TC := TClasslist.Create; DN := TDeelnemer.Create //Maak object DN.property := eenwaarde //Vul je object TC.Add(TClass(DN)); //Typecasten//doe andere dingen DN := TDeelnemer(TC.Items[b]); //Object ophalen ShowMessage(DN.property) //Inhoud van object tonen//bij afsluiten prog alle classlist objecten vrijgeven!!!! For B := 0 to TC.Count-1 do Begin DN := TDeelnemer(TC.Items[b]); DN.Free; End; TC.Free; //En ClassList zelf vrijgeven Resistance is futile you will be assimilated Those who would give up essential liberty, to purchase a little temporary safety, deserve neither liberty nor safety. Benjamin Franklin (1706-1790) Mijn vrijheid eindigt niet waar jouw angst begint!
The Iron Maiden Geplaatst: 17 februari 2006 Auteur Geplaatst: 17 februari 2006 Ok, dank je. Ik ga het proberen met een Classlist The Iron Maiden VU+ duo met OpenPli, CCam 2.11 op 78 cm triax wok en multiblock op Astra 19.2, 23.5 en 28.2 -- Hier had uw reclame kunnen staan --
The Iron Maiden Geplaatst: 18 februari 2006 Auteur Geplaatst: 18 februari 2006 Het gaat prima met een TClasslist, maar ik zit nog met 1 probleem: Hoe kan ik items uit een classlist updaten? Een classlist heeft geen replace of update method. Natuurlijk kan ik eerst net betreffende element wissen en daarna weer toevoegen, maar is er geen eenvoudigere oplossing? The Iron Maiden VU+ duo met OpenPli, CCam 2.11 op 78 cm triax wok en multiblock op Astra 19.2, 23.5 en 28.2 -- Hier had uw reclame kunnen staan --
Psychosammie Geplaatst: 20 februari 2006 Geplaatst: 20 februari 2006 Natuurlijk. Je kan direct het object in de ClassList benaderen en de property's van het object wijzigen. Dat gaat op de volgende manier: Code: TDeelnemer(TC.Items[b]).Property := Waarde; In een array zou dat er ongeveer zo uitgezien hebben: Code: Deelnemers[5].Property := Waarde Het idee is het zelfde. Resistance is futile you will be assimilated Those who would give up essential liberty, to purchase a little temporary safety, deserve neither liberty nor safety. Benjamin Franklin (1706-1790) Mijn vrijheid eindigt niet waar jouw angst begint!
The Iron Maiden Geplaatst: 20 februari 2006 Auteur Geplaatst: 20 februari 2006 Waarschijnlijk heb ik een syntax fout gemaakt, want zo dacht ik het ook te doen. Met jouw voorbeeld lukt het wel. Bedankt! The Iron Maiden VU+ duo met OpenPli, CCam 2.11 op 78 cm triax wok en multiblock op Astra 19.2, 23.5 en 28.2 -- Hier had uw reclame kunnen staan --
Psychosammie Geplaatst: 20 februari 2006 Geplaatst: 20 februari 2006 Wat voor een fantastisch opensource programma ben je aan het maken? Resistance is futile you will be assimilated Those who would give up essential liberty, to purchase a little temporary safety, deserve neither liberty nor safety. Benjamin Franklin (1706-1790) Mijn vrijheid eindigt niet waar jouw angst begint!
The Iron Maiden Geplaatst: 22 februari 2006 Auteur Geplaatst: 22 februari 2006 ben momenteel met bezig met een programma om een F1 pool bij te houden. Ik heb een aantal jaar geleden een eerste opzet gemaakt, maar dit was niet object geörienteerd. Nu ben ik bezig om de hele datatypering om te gooien naar objecten. Je moet bezig blijven tijdens deze regenachtige dagen... The Iron Maiden VU+ duo met OpenPli, CCam 2.11 op 78 cm triax wok en multiblock op Astra 19.2, 23.5 en 28.2 -- Hier had uw reclame kunnen staan --
The Iron Maiden Geplaatst: 1 maart 2006 Auteur Geplaatst: 1 maart 2006 Laaste vraag: Hoe kan ik een TClasslist, dus een array van classes opslaan in een bestand? Ik probeer het met: var Dn:TDeelnemer; F:File of TDeelnemer; assignfile(F,'deelnrs.dat'); rewrite(F); Dn:=TDeelnemer.Create; if Deelnemers.count > 0 then for k:=0 to Deelnemers.Count-1 do begin Dn:=TDeelnemer(Deelnemers.Items[k]); write(F,dn); end; closefile(F); Dn:=nil; Dn.Free; Maar ik krijg steeds bestanden van 4 of 8 bytes groot <img src="/forums/images/graemlins/confused.gif" alt="" /> Met records werkte het wel altijd zo. Wat doe ik verkeerd?? mvg, The Iron Maiden VU+ duo met OpenPli, CCam 2.11 op 78 cm triax wok en multiblock op Astra 19.2, 23.5 en 28.2 -- Hier had uw reclame kunnen staan --
Psychosammie Geplaatst: 2 maart 2006 Geplaatst: 2 maart 2006 Deze is ook leuk. Het verschil met records is dat je variable geen record is maar een pointer naar een datastructuur. Nu sla je dus de pointer op en niet de inhoud. Ik denk dat je dit met steams moet oplossen. Ik ga dit voor je uitzoeken. Kan een dagje of 2 duren. Resistance is futile you will be assimilated Those who would give up essential liberty, to purchase a little temporary safety, deserve neither liberty nor safety. Benjamin Franklin (1706-1790) Mijn vrijheid eindigt niet waar jouw angst begint!
Psychosammie Geplaatst: 7 maart 2006 Geplaatst: 7 maart 2006 Zo, dat heeft even geduurd. Dit is nog niet zo'n eenvoudig probleem. Een class is niet alleen data maar ook de bijbehorende methoden. Je zou denken dat het een veelvoorkomende vraag is maar ik heb de oplossing toch niet direct kunnen vinden. Een aantal objecten heeft een loadfromfile/savetofile method maar hier gaat het altijd om strings, dus eenvoudige data. Jij hebt complexe data. Je zal voor je objecten een eigen loadfromfile/savetofile moeten schrijven. Ik heb een voorbeeld gevonden van een soort Paint waarbij je vierkantjes en circeltjes object blijven. De objecten worden als XML opgeslagen. Hieronder een stukje van de file. Code: <surface version="1.0"> <layer id="1818609651"> <visible>1</visible> <locked>0</locked> <elements> <element class="TSCDeRectangle" id="1437924106"> <visible>1</visible> <locked>0</locked> <rect> <left>91</left> <top>43</top> <right>211</right> <bottom>151</bottom> </rect> <brush> <color>$0000CC99</color> <style>0</style> </brush> <pen> <color>clBlack</color> <mode>4</mode> <style>0</style> <width>1</width> </pen> </element> Het is een leuk component met voorbeeldprogramma. Als je je daar eens doorheen worstelt kom je er denk ik wel uit. Het voorbeeld is te vinden op Torry, de Delphi site. De naam is sweetdrawingengine. Suc6 Resistance is futile you will be assimilated Those who would give up essential liberty, to purchase a little temporary safety, deserve neither liberty nor safety. Benjamin Franklin (1706-1790) Mijn vrijheid eindigt niet waar jouw angst begint!
The Iron Maiden Geplaatst: 7 maart 2006 Auteur Geplaatst: 7 maart 2006 Ok, bedankt voor je moeite. Ik weet waar ik het nu moet zoeken. The Iron Maiden VU+ duo met OpenPli, CCam 2.11 op 78 cm triax wok en multiblock op Astra 19.2, 23.5 en 28.2 -- Hier had uw reclame kunnen staan --
Aanbevolen berichten
Maak een account aan of log in om te reageren
Je moet een lid zijn om een reactie te kunnen achterlaten
Account aanmaken
Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!
Registreer een nieuwe accountInloggen
Heb je reeds een account? Log hier in.
Nu inloggen