![]() |
Daten aus Listbox in Array speichern.
Hallo Leute :) Ich möchte ein in einem Programm aus der Listbox Daten in ein Array peichern, aber leider kommt es dabei ständig zu einem Problem :)
Delphi-Quellcode:
Bitte um Hilfe :)
procedure TForm1.EIntrgeListboxinAraybernehmen1Click(Sender: TObject);
var Vposition:integer; zeile,buffer: String; begin while zaehler <> listbox1.Count-1 do begin with Verkehr[zaehler] do begin zeile:=listbox1.Items[zaehler]; //inhalt von Zeile '10.03.2010/12943' Vposition:= pos('/',zeile); datum := copy(zeile,1,Vposition-1); delete (zeile,1,Vposition); anzahl:= strtoint(zeile); end; end; end; |
Re: Daten aus Listbox in Array speichern.
Zitat:
Und eine kurze Erläuterung zu den Variablen und deinem Code wäre auch nicht schlecht. So kann man nur raten, was du versuchst zu tun. |
Re: Daten aus Listbox in Array speichern.
Zur weiteren Erklärung :)
Ich weiß nicht wo das Problemm genau liegt. Aber der Programmablauf verläuft folgender maßen: ACh ja Die Variable 'Verkehr' ist ein dynamisches array mit einem record Datentyp
Delphi-Quellcode:
{In der Listbox befinden sich ein Daten(Datum) und ein zahlenwert getrennt durch ein '/' und ich möchte diese beiden getrennt in ein array speichern.} {1. Inhalt der erstel Zeile von der Listbox wird in zeile reingeschreiben 2.Jetzt wird das in die variable datum die Strings von der ersten bis zur position von '/' reingeschrieben 3.Hier wird in der zeile das Datum mit dem '/' gelöscht sodass nurnoch eine Zahl drinsteht} procedure TForm1.EIntrgeListboxinAraybernehmen1Click(Sender: TObject); var Vposition:integer; zeile: String; begin while zaehler <> listbox1.Count-1 do begin with Verkehr[zaehler] do begin zeile:=listbox1.Items[zaehler]; //1. Vposition:= pos('/',zeile); datum := copy(zeile,1,Vposition-1);//2. delete (zeile,1,Vposition); //3. anzahl:= strtoint(zeile); end; end; end; |
Re: Daten aus Listbox in Array speichern.
Hallo,
fehlt da nicht ein
Delphi-Quellcode:
und am Ende der Prozedur
var
zaehler : Integer;
Delphi-Quellcode:
??
inc(zaehler) // oder dec(zaehler)
|
Re: Daten aus Listbox in Array speichern.
Ja das stimmt, aber er Merkert ja schon bei der löschen procedure
|
Re: Daten aus Listbox in Array speichern.
Zitat:
Zitat:
|
Re: Daten aus Listbox in Array speichern.
Er müsste eigendlich früher meckern, weil die Var. "Zaehler" gar nicht erst bekannt ist.
Gruß Jens |
Re: Daten aus Listbox in Array speichern.
Könnte global sein. Des Wegen will ich ja mehr Infos.
|
Re: Daten aus Listbox in Array speichern.
Wäre aber global etwas seltsam. Oder?
Gruß Jens |
Re: Daten aus Listbox in Array speichern.
Also sobald die Procedure bei der ausführung des Programms starte, dann kommt ein sobald er in die delete-procedure reingeht. BIn schon mehrfach mit dem Debugger durch und finde das problem einfach nicht..
Und der zaehler ist global deklariert ^^ |
Re: Daten aus Listbox in Array speichern.
Was schreibt er denn für eine Exception
|
Re: Daten aus Listbox in Array speichern.
Zitat:
|
Re: Daten aus Listbox in Array speichern.
Also Jens wenn das hier gemeint ist dann bittesehr:
Zitat:
|
Re: Daten aus Listbox in Array speichern.
Das sieht auf als wenn du auf nicht reservierten Speicher zu greifst.
Was ist denn Verkehr für ein Typ? Ein Objekt? Ein Record? |
Re: Daten aus Listbox in Array speichern.
Ein dynamisches Reccordarray. Weil ich es für unterschiedlich viele Eintäge nutzen will :)
|
Re: Daten aus Listbox in Array speichern.
So viel wie ich weiß, musst Du dann auch eine Var. von deinem Record erstellen.
in etwa so...
Delphi-Quellcode:
Gruß Jens
var
MeinVerkehr : TVerkehr; |
Re: Daten aus Listbox in Array speichern.
Nimm erst mal das komische with aus dem Quellcode. Dann kann man auch was erkennen.
|
Re: Daten aus Listbox in Array speichern.
Habe ich schon.. alles Global schon passier -.-'
Deshalb die variable Verkehr!!
Delphi-Quellcode:
type TRVerkehr = record
Datum:string[10]; anzahl:integer; end; type TVerkehr = array of TRVerkehr; var Verkehr: TVerkehr; {$R *.dfm} procedure TForm1.DateiinListboxeinlesen1Click(Sender: TObject); begin if not OpenDialog1.Execute then exit; listbox1.Items.LoadFromFile(OpenDialog1.FileName); end; procedure TForm1.EIntrgeListboxinAraybernehmen1Click(Sender: TObject); var Vposition:integer; zeile,buffer: String; begin while zaehler <> listbox1.Count-1 do begin with Verkehr[zaehler] do begin zeile:=listbox1.Items[zaehler]; Vposition:= pos('/',zeile); datum := copy(zeile,1,Vposition-1); delete (zeile,1,Vposition); anzahl:= strtoint(zeile); inc(zaehler); end; end; end; procedure TForm1.FormShow(Sender: TObject); begin zaehler:=0; end; |
Re: Daten aus Listbox in Array speichern.
Dann mach das mal lokal. Warum muss das global sein. Oder zeig uns doch mal den globalen Code, der noch zu dem Code dazu gehört.
|
Re: Daten aus Listbox in Array speichern.
Also sind Zeile und Anzahl Inhalte des Records Verkehr...
|
Re: Daten aus Listbox in Array speichern.
Das hat so keinen Zweck. Wir raten hier nur rum.
|
Re: Daten aus Listbox in Array speichern.
Wo wird eigentlich die Größe des Arrays gesetzt?
Ich vermisse ein SetLength |
Re: Daten aus Listbox in Array speichern.
Also, irgendwie alles ein bißchen seltsam,
Delphi-Quellcode:
Die Deklaration von Zaehler finde ich nicht, gut vieleicht übersehen. Aber wenn Du Zahler auf 0 setzen tust, im OnShow, was passiert den mit Zaehler nach der Funktion. Vieleicht solltest Du das erstmal so umbauen...
procedure TForm1.FormShow(Sender: TObject);
begin zaehler:=0; end;
Delphi-Quellcode:
Dann i als Lokal deklariert...
for I := 0 to Listbox1.Count - 1 do
begin .. Gruß Jens |
Re: Daten aus Listbox in Array speichern.
Zitat:
|
Re: Daten aus Listbox in Array speichern.
Zitat:
zaehler = 0 (bei Programmstart und nach FormShow) ListBox1 ist leer, demnach ListBox1.Count-1 = -1 und schwups knallt es :)
Delphi-Quellcode:
Außerdem, wozu eine globale Variable, für eine lokale Schleife?
while zaehler <= listbox1.Count-1 do
// oder while zaehler < listbox1.Count do |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 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