Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Werte werden nicht in Array geschrieben (https://www.delphipraxis.net/157861-werte-werden-nicht-array-geschrieben.html)

Ykcim 27. Jan 2011 14:51


Werte werden nicht in Array geschrieben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,

ich habe ein Problem, bei welchem ich nicht weiterkomme, zumal es an anderer Stelle nicht auftritt.

Ich habe folgendes Array:
Delphi-Quellcode:
type
  TRows = array of array of string; // [Cols, Rows]
  TCols = array of string;
Das Array, in welches ich schreiben möchte, heißt RowsTEMP und ist vom Typ TRows.

Jedes Mal, bevor ich in das Array schreiben, füge ich eine weitere Zeile hinzu, da ich vorher nie weiß, wieviele Zeilen es werden.

Hier das Code-Fragment:
Delphi-Quellcode:
                  if (Rows1[10,j]<>'9') and (copy(Rows1[7,j],0,2)=Prozess) then
                    begin
                      k:=k+1;
                      setlength( ColsTEMP,13);
                      setlength(RowsTEMP, Length(ColsTEMP),k);
                      //Daten schreiben
                      RowsTEMP[0,k]:=Rows1[0,J];
                      RowsTEMP[1,k]:=Rows1[1,J];
                      RowsTEMP[2,k]:=Rows1[2,J];
                      RowsTEMP[3,k]:=Rows1[3,J];
                      RowsTEMP[4,k]:=Rows1[4,J];
                      RowsTEMP[5,k]:=Rows1[5,J];
                      RowsTEMP[6,k]:=Rows1[6,J];
                      RowsTEMP[7,k]:=Rows1[7,J];
                      RowsTEMP[9,k]:=Rows1[8,J];
                      RowsTEMP[10,k]:=Rows1[9,J];
                      RowsTEMP[11,k]:=Rows1[10,J];
                      j:=j+1;
                    end;
Aus irgendeinem Grund werden die Daten aus dem Array Rows1 nicht in das Array RowsTEMP geschrieben. Ich bin im Debug-Modus durchgegangen. In dem Array Rows1[0,J] steht der Wert '165413'. Wenn ich den Wert RowsTEMP[0,k] überwache, wird dieser mir mit dem gleichen Wert ausgewiesen. Gucke ich aber ganz allgemein in das Array RowsTEMP, dann sehe ich, dass dort keine Werte reingeschrieben werden.

Ich habe ein Bild angehängt, um die überwachten Variablen anzuzeigen...

Kennt jemand das Probelm und hat vielleicht jemand eine Lösung dafür?

Vielen Dank

Ykcim

Bummi 27. Jan 2011 15:05

AW: Werte werden nicht in Array geschrieben
 
Hast Du die Bereichsüberprüfung aktiviert und Dir auch mal j und k ausgeben lassen, nicht daß k in einen ungültigen Bereich zeigt ?

Ykcim 27. Jan 2011 15:06

AW: Werte werden nicht in Array geschrieben
 
Man bastelt tagelang herum und findet nichts. Dann fragt man die Spezialisten und auf einmal fällt es einem wie Schuppen aus den Haaren...

Ich habe das "-1" vergessen. Ein Array beginnt bei 0 und nicht bei 1.

mit diesem Code funktioniert es!

Delphi-Quellcode:
if (Rows1[10,j]<>'9') and (copy(Rows1[7,j],0,2)=Prozess) then
                    begin
                      k:=k+1;
                      setlength( ColsTEMP,13);
                      setlength(RowsTEMP, Length(ColsTEMP),k);
                      //Daten schreiben
                      RowsTEMP[0,k-1]:=Rows1[0,J];
                      RowsTEMP[1,k-1]:=Rows1[1,J];
                      RowsTEMP[2,k-1]:=Rows1[2,J];
                      RowsTEMP[3,k-1]:=Rows1[3,J];
                      RowsTEMP[4,k-1]:=Rows1[4,J];
                      RowsTEMP[5,k-1]:=Rows1[5,J];
                      RowsTEMP[6,k-1]:=Rows1[6,J];
                      RowsTEMP[7,k-1]:=Rows1[7,J];
                      RowsTEMP[9,k-1]:=Rows1[8,J];
                      RowsTEMP[10,k-1]:=Rows1[9,J];
                      RowsTEMP[11,k-1]:=Rows1[10,J];
                      j:=j+1;
                    end;
In diesem Sinne

Ykcim

Ykcim 27. Jan 2011 15:08

AW: Werte werden nicht in Array geschrieben
 
Hallo Bummi,

Du hast recht, wie ich gerade beschrieben habe, habe ich mein Array nicht bei 0, sondern bei 1 versucht zu beschreiben...

Vielen Dank

Ykcim

DeddyH 27. Jan 2011 15:10

AW: Werte werden nicht in Array geschrieben
 
Deshalb solltest Du besser High() verwenden ;)

Deep-Sea 27. Jan 2011 15:13

AW: Werte werden nicht in Array geschrieben
 
Zitat:

Zitat von Ykcim (Beitrag 1077664)
Ein Array beginnt bei 0 und nicht bei 1.

Trifft nicht auf alle Arrays zu:
Delphi-Quellcode:
XYZ: Array[5..6] of Boolean;
Das geht von Index 5 bis 6 - z.B. :wink: Darum nicht nur High nutzen, wie DeddyH sagte, sondern ggf. auch Low().

DeddyH 27. Jan 2011 15:21

AW: Werte werden nicht in Array geschrieben
 
Das ist zwar bei dynamischen Arrays nicht notwendig, aber der Vollständigkeit halber hast Du Recht. Ich persönlich habe mir das auch irgendwann angewöhnt, jedesmal Low() und High() zu verwenden, dann muss man gar nicht weiter nachdenken, damit das immer passt ;)

Ykcim 27. Jan 2011 15:34

AW: Werte werden nicht in Array geschrieben
 
Hallo,

habe ich noch nie verwendet...

wie würde der Syntax denn bei RowsTEMP[0,k-1] aussehen?

RowsTEMP[0,high()]?

Ykcim

Deep-Sea 27. Jan 2011 15:36

AW: Werte werden nicht in Array geschrieben
 
Delphi-Quellcode:
RowsTEMP[0, High(RowsTEMP[0])]

oder sogar
Delphi-Quellcode:
RowsTEMP[Low(RowsTEMP), High(RowsTEMP[Low(RowsTEMP)])]

Ist bei mehrdimensionalen Arrays immer etwas unübersichtlich ... finde ich.

DeddyH 27. Jan 2011 15:37

AW: Werte werden nicht in Array geschrieben
 
Delphi-Quellcode:
RowsTEMP[0,high(RowsTEMP[0])]
[edit] *Gnarf* wo war der rote Kasten? [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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