Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Array Problem (https://www.delphipraxis.net/33859-array-problem.html)

BlueBong 13. Nov 2004 21:12


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:
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;
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.
Außerdem kommen nicht mehr als 17 Zeilen mit g am Anfang.

Woran kann das vielleicht liegen?

MfG Michael

jim_raynor 13. Nov 2004 21:15

Re: Array Problem
 
Ähhh. DP als Code-Tag war nicht ganz richtig. Du musst delphi verwenden. Bitte ändern.

BlueBong 13. Nov 2004 21:16

Re: Array Problem
 
Ist geschehen.

Sorry hab mich vertippt.

MfG Michael

Nikolas 13. Nov 2004 21:21

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.

BlueBong 13. Nov 2004 21:33

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:
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
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]

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

jim_raynor 13. Nov 2004 21:44

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?

BlueBong 13. Nov 2004 21:51

Re: Array Problem
 
Der Fehler tritt an folgender Stelle auf

Delphi-Quellcode:
      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;
Folgender Fehler wird ausgegeben.

"Der Index der Liste überschreitet das Maximum (1564)"

MfG Michael

jim_raynor 13. Nov 2004 21:54

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.

kiar 14. Nov 2004 13:46

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:
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;
also ich kann den fehler nicht nachvollziehen.

raik

BlueBong 14. Nov 2004 22:40

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 07:02 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz