![]() |
Arry of Boolean = funkzt nicht
hya,
ich habe derzeit ein objekt erstellt welches viele daten zu einem programm, das kopiert werden soll, sammelt. So eine Variable bzw property ist ProgPathList : TStringList. So nun brauch ich eine sammelvariable die zu jedem eintag in der Stringlist einen Boolischen wert speichert. nun wollte ich eine property anlegen die so aussieht property PathChecked : Array of boolean ... und da kommt ein fehler das sich dynamische arrays mit boolischen variablen nicht so recht vertragen. kann mir jemand sagen wie ich das anders hinkrieg das zu jedem String der Stringliste ein boolischer wert gespeichert werden kann. Greetz Master_BB |
Re: Arry of Boolean = funkzt nicht
Missbrauch einfach die sl.objects[i] als boolean! mit ein bissche gecaste sollte das kein problem sein. zb: sl.addObject('stringDing',pointer(true));
|
Re: Arry of Boolean = funkzt nicht
z.B. so:
Delphi-Quellcode:
Spart eine zweite Liste.
StringList.Objects[x] := TObject(True);
Gruß, teebee |
Re: Arry of Boolean = funkzt nicht
oder aber
Code:
für eine dynamisch grosse liste allerdings solltes du dann bei write die liste um ein element erweitern
type
TMyBoolArray = array of Boolean; TMyClass = class public property PathChecked : TMyBoolArray; das ganze machst du dann mit Setlength(<array>,<grösse>) |
Re: Arry of Boolean = funkzt nicht
hey danke snoop7,
jedoch warum muß ich die liste erhöhen? Es ist doch ein dynamisch großer array, sprich unendlich lang wie die Stringliste. oder seh ich das falsch? |
Re: Arry of Boolean = funkzt nicht
Hi.
Das siehst du falsch. Das dynamisch bezieht sich darauf, dass man die Größe verändern kann, man muss es aber auch machen. Nach der einfachen Deklaration hat das Array erstmal gar keinen Speicherplatz - wenn du etwas drinnen ablegen willst, must du die Länge definieren. Und dazu brauchst du halt setlength(). cu |
Re: Arry of Boolean = funkzt nicht
hm irgentwie krieg ich immer fehler wenn ich mit dem array arbeite.
ich glaub der bereich des arrays haut noch nicht hin. in der write procedure des PathChecked hab ich das jetzt so gemacht Set Length(FPathChecked, Succ(Length(PathChecked))); FPathChecked := Value; aber irgentwie hauts noch net hin obwohl ich doch jedes mal nach dem code her den array um 1s erhöhe. |
Re: Arry of Boolean = funkzt nicht
Du musst dein Value einem Element des Arrays zuweisen, nicht dem Array selbst.
|
Re: Arry of Boolean = funkzt nicht
ich kriegs nicht gebacken
kann nicht einer mal meines korriegiert posten? brauch diese funktion sonst komm ich nicht weiter.
Delphi-Quellcode:
greetz
type TBla = class
private FPathChecked : TBoolArray; procedure SetPathChecked(const Value: TBoolArray); public property PathChecked : TBoolArray read FPathChecked write SetPathChecked; end; procedure TPathItem.SetPathChecked(const Value: TBoolArray); begin SetLength(FPathChecked, Succ(Length(PathChecked))); FPathChecked := Value; end; |
Re: Arry of Boolean = funkzt nicht
Moin auch!
Ja, das ist doch eine StringListe. Pack das doch einfach in den String rein. An das Ende ein | (Pipe) und dann ein * für True. Da kannst du auch 0 und 1 ran hängen. Ist egal. Beim Auslesen die Zeile mit Copy(String,Pos('|',String) + 1,1) auslesen und wenn ein Stern zurück kommt, war das Ding True. Du kannst dir auch mehere Pipe-Symbole aneinander hängen. Ein paar lockere Funktionen Scheiben:
Delphi-Quellcode:
Nur mal zur Inspiration. Dann kannste zweidimensional ohne Ende speichern.
Function PipeStrCount( aSt : String):Integer;
Function PipeStrItem( aSt : String; aNr : Integer):String; Function PipeStrLongest( aSt : String):Integer; Procedure PipeStrSetStr( Var aSt : String; aNeu : String; aNr : Integer); Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz