Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit Array (https://www.delphipraxis.net/119939-probleme-mit-array.html)

Tim Henford 3. Sep 2008 13:05


Probleme mit Array
 
Hallo,

ich habe folgenden Code:
Delphi-Quellcode:
type ZwMerker = record
  ToDo   : String;
  Tabelle : String;
  wer    : String;
  ID     : String;
  Zeit   : TDateTime;
end;

var
  merk   : array of ZwMerker;
  LA     : integer = 0;

procedure test(todo, Tabelle, Daten, id: string);
begin
...
  LA:= LA+1;
  SetLength(merk,LA);
  merk[LA].ToDo:= ToDo;
  merk[LA].Tabelle:= Tabelle;
  merk[LA].ID:= ID;
  merk[LA].wer:= PCName;
  merk[LA].Zeit:= now;
....
end;
Aber bei merk[LA].ID:= ID; hängt er sich immer auf, woran liegt das?

Danke Tim

mkinzler 3. Sep 2008 13:08

Re: Probleme mit Array
 
Wie groß ist merk? Was für einen Wert hat LA?

Tim Henford 3. Sep 2008 13:14

Re: Probleme mit Array
 
Also die Test-Procedure wird immer auf Knopfdruck von Button1 ausgelöst und soll einfach die übergebenen Werte zwischenspeichern bis ein 2ter Button gedrückt wurde.
LA startet also mit 0 und wird jedesmal um 1 erhöht...

aber keine Ahnung wie groß merk ist oder wird, es sind immer Strings mit utnerschiedlicher Länge bis zu 1000 Zeichen...

mkinzler 3. Sep 2008 13:19

Re: Probleme mit Array
 
LA ist doch der Index im Array.

HenKst 3. Sep 2008 13:20

Re: Probleme mit Array
 
Dynamische arrays sind 0 basiert

Wenn du also setlength auf LA machst, ist das höchste Element LA-1.
Sollte sich also eigentlich schon bei
Delphi-Quellcode:
 merk[LA].ToDo:= ToDo;
aufhängen.

sirius 3. Sep 2008 13:24

Re: Probleme mit Array
 
Mach nur setlength(merk,LA+1); Und beim ersten mal sollte LA=0 sein, damit du keinen Platz verschenkst.


Zitat:

Zitat von HenKst
Sollte sich also eigentlich schon bei
Delphi-Quellcode:
 merk[LA].ToDo:= ToDo;
aufhängen.

Nö, der Fehler kommt irgendwann. Das ist das Problem bei den Arrays. Manchmal kommt er erst viel später und man kann dann ewig danach suchen. Du schreibst halt munter irgendwo unkoordiniert im Speicher rum und übertschreibst evtl. wichtige Sachen. Das Programm kracht dann erst, wenn du diese Sachen brauchst.

Tim Henford 3. Sep 2008 13:27

Re: Probleme mit Array
 
danke für die schnelle Hilfe.
ach das ist immer ein Murks mit 0 und 1 ;)


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