![]() |
Array Problem
Hallo miteinander
Ich habe folgenden Code programmiert. Er soll mir Daten in ein 3 Dimensionales Array schreiben. Die Textdatei sieht folgendermassen aus.
XML-Code:
0
0 0 0 0 g1 12 233 34 21 12 fd fg fdg fg fg g2 ....
Delphi-Quellcode:
Dummerweise läuft jedoch irgendwie immer dieses Array über wobei ich hierfür keine Erklärung habe, da nie mehr als 6*21 Zeilen kommen bevor wieder eine Zeile mit einem g am Anfang kommt.
procedure TForm1.Button2Click(Sender: TObject);
var sl,sx: TStringList; zeilennr,i,j,kontrollnummer :integer; temp,kontrollstring : String; gebaude : Array [0..17,0..20,0..5] of String; begin sx:=TStringList.Create; //Objekt erzeugen sx.LoadFromFile('c:\gebaude1.txt'); //Datei in Stringliste laden zeilennr:=0; i:=0; j:=0; kontrollnummer:=1; while zeilennr<sx.Count-1 do begin kontrollstring:='g'+inttostr(kontrollnummer); temp:=sx[zeilennr]; //kontrollstring=temp if (pos('g',temp))<>0 then begin i:=i+1; kontrollnummer:=kontrollnummer+1; j:=0; end else begin gebaude[i,j,0]:=sx[zeilennr]; gebaude[i,j,1]:=sx[zeilennr+1]; gebaude[i,j,2]:=sx[zeilennr+2]; gebaude[i,j,3]:=sx[zeilennr+3]; gebaude[i,j,4]:=sx[zeilennr+4]; gebaude[i,j,5]:=sx[zeilennr+5]; j:=j+1; end; zeilennr:=zeilennr+6; end; sx.free; end; Außerdem kommen nicht mehr als 17 Zeilen mit g am Anfang. Woran kann das vielleicht liegen? MfG Michael |
Re: Array Problem
Ähhh. DP als Code-Tag war nicht ganz richtig. Du musst delphi verwenden. Bitte ändern.
|
Re: Array Problem
Ist geschehen.
Sorry hab mich vertippt. MfG Michael |
Re: Array Problem
Könntest du vielleicht sagen, was genau du machen willst? Schau mal in einen Styleguide, dein Text ist schwer zu lesen, da nicht erkennbar ist, welches end zu welchem begin gehört. Normalerweise wird so eingerückt, dass jedes Begin/End Paar übereinender steht.
|
Re: Array Problem
So ich habe das schön eingerückt.
Was ich genau machen will kommt hier. Ich habe eine Textdatei die wie folgt aussieht.
XML-Code:
g[1-3] ist immer eine Obergruppe(Combobox), diese Obergruppen haben verschiedene können immer eine Eigenschaften(Combobox) haben welche einer Nummer zugewiesen hast. Diese Nummer ist auch immer die Zeilennummer nach dem g[1-3]
g0
0;0;0;0;0;0 g1 0;0;0;0;0;0 g2 89;89;89;0;0;00:13:00 h 95;90;89;0;0;00:15:00 h 140;131;125;0;0;00:22:00 h 180;145;137;0;0;00:29:00 h 231;189;187;0;0;00:37:00 h 364;247;226;0;0;00:45:00 h 478;360;389;0;0;00:54:00 h 656;540;488;0;0;01:02:55 h 799;758;732;0;0;01:08:58 h 951;895;886;0;0;01:16:24 h 1050;976;967;0;0;01:35:55 h 1388;1256;1185;0;0;01:48:00 h 1754;1458;1375;0;0;01:59:47 h 1844;1705;1648;0;0;03:59:48 h 2305;1954;1899;0;0;04:48:40 h 2958;2750;2687;0;0;07:59:10 h 3804;3787;3687;0;0;08:37:05 h 5410;5317;5308;0;0;09:31:29 h 8954;8780;8689;0;0;11:18:00 h 15875;15871;15869;0;0;14:01:17 h g3 89;89;89;0;0;00:13:00 h 95;90;89;0;0;00:15:00 h 150;121;115;0;0;00:22:00 h 161;145;127;0;0;00:29:00 h 248;189;157;0;0;00:37:00 h Nun möchte ich diese Daten, welche in dieser jeweils in ein Array schreiben, so dass ich sie leicht aufrufen kann. Das Array sollte folgendermassen aussehen array[Obergruppe,Eigenschaft,Datennummer] Das ich dort hin komme erstetze ich schon zuvor jedes Semikolon durch einen Zeilenumbruch. Ich hoffe das hilft euch ein bisschen. MfG Michael |
Re: Array Problem
Sicher, dass der Fehler in dieser Prozedur auftritt an dieser Stelle auftritt? An welcher Stelle kommt es genau zum Fehler?
Schon mal den Debugger von Delphi benutzt? |
Re: Array Problem
Der Fehler tritt an folgender Stelle auf
Delphi-Quellcode:
Folgender Fehler wird ausgegeben.
else begin
gebaude[i,j,0]:=sx[zeilennr]; gebaude[i,j,1]:=sx[zeilennr+1]; gebaude[i,j,2]:=sx[zeilennr+2]; gebaude[i,j,3]:=sx[zeilennr+3]; -> gebaude[i,j,4]:=sx[zeilennr+4]; gebaude[i,j,5]:=sx[zeilennr+5]; j:=j+1; end; "Der Index der Liste überschreitet das Maximum (1564)" MfG Michael |
Re: Array Problem
Dsa Problem ist nicht das Array. In der Stringliste sind einfach nicht genügend Einträge.
Du solltest also prüfen, ob alles mit der Eingabedatei in Ordnung ist. |
Re: Array Problem
also bei mir tritt gar kein fehler auf.
habe die datei gespeichert, wie oben aufgeführt und den quelltext lesbarer gemacht. die datei wird in das array eingelesen.
Delphi-Quellcode:
also ich kann den fehler nicht nachvollziehen.
procedure TForm1.Button1Click(Sender: TObject);
var sx: TStringList; znr ,i ,j ,knr :integer; temp ,kstring : String; gebaude : Array [0..17,0..20,0..5] of String; begin sx:= TStringList.Create; //Objekt erzeugen sx.LoadFromFile('c:\gebaude1.txt'); //Datei in Stringliste laden znr:=0; i:=0; j:=0; knr:=1; while znr < sx.Count-1 do begin kstring:='g' + inttostr(knr); temp:=sx[znr]; // kontrollstring=temp if (pos('g',temp)) <> 0 then begin inc(i); inc(knr); end else begin gebaude[i,j,0]:=sx[znr]; gebaude[i,j,1]:=sx[znr+1]; gebaude[i,j,2]:=sx[znr+2]; gebaude[i,j,3]:=sx[znr+3]; gebaude[i,j,4]:=sx[znr+4]; gebaude[i,j,5]:=sx[znr+5]; inc(j); end; znr:=znr+6; end; sx.free; end; raik |
Re: Array Problem
Ich ja auch nicht. Das ist mein Problem.
Hab es nun aber einach mal ganz neu probiert. Und nun hat es geklappt. MfG Michael |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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