Re: Stress mit Record aber warum?
Zitat:
greifst du irgendwo auf einen ungültigen bereich zu? alles was keinen index zwischen 0 und 19 hat weist ins nirvana und schmeißt nen fehler. |
Re: Stress mit Record aber warum?
Wie gesagt, ich mache nur das was oben steht. Wenn ich dann die Zeile auskommentiere, in der ich 'test' ins Array schreiben will, ist alles in Butter. :freak:
|
Re: Stress mit Record aber warum?
Hast du überprüft, ob i auch wirklich nur Werte zwischen 0 und 19 annehmen kann?
|
Re: Stress mit Record aber warum?
Delphi-Quellcode:
type
THistoryData = record FileName: string; // oder größe gleich reservieren mit filename: string[50] OldSize, NewSize: int64; end; var HistoryData: array of THistoryData; i: Integer; s: string; begin SetLength(HistoryData, 20); for i := 0 to Length(HistoryData) -1 do HistoryData[i].FileName := Format('Filename #%d', [i]); for i := 0 to Length(HistoryData) -1 do s := s + HistoryData[i].FileName + #13#10; ShowMessage(s); |
Re: Stress mit Record aber warum?
Nicht
Delphi-Quellcode:
sondern
for i := 0 to Length(HistoryData) -1
Delphi-Quellcode:
for i := low(HistoryData) to High(HistoryData)
|
Re: Stress mit Record aber warum?
Alternativ kannst Du acu anstelle des Array eine TList nehmen.
Die hat Methoden zum hinzufügen und löschen von Elementen. Und auch eine Eigenschaft die die Größe der Liste beinhaltet. Der Vollständigkeit halber ergänzt:
Delphi-Quellcode:
erstellen von Einträgen:
type
TForm1 = class(TForm) .... private { Private-Deklarationen } type PHistory = ^THistory THistoryData = record FileName: string; OldSize, NewSize: int64; end; HistoryData : PHistory; HistoryList : TList; public { Public-Deklarationen } end;
Delphi-Quellcode:
Ausgabe von Einträgen:
new(HistoryData);
HistoryData^.FileName:='...'; HistoryList.add(HistoryData);
Delphi-Quellcode:
Löschen der Liste:
for i:=0 to HistoryList.count -1 do
begin HistoryData:=HistoryList.items[i] ShowMessage(HistoryData^.FileName); end;
Delphi-Quellcode:
Grüße
While HistoryList.count > 0 do
begin HistoryData:= HistoryList.items[0]; Dispose(HistoryData); HistoryList.delete(0); end; HistoryList.free; Klaus |
Re: Stress mit Record aber warum?
Zitat:
|
Re: Stress mit Record aber warum?
Das Beispiel von ErazerZ mit Jellys Änderungen funktioniert bei mir ohne Probleme (mal die komplette Unit):
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } type THistoryData = record FileName: string; OldSize, NewSize: int64; end; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var HistoryData: array of THistoryData; i: Integer; s: string; begin SetLength(HistoryData, 20); // Array füllen for i := Low(HistoryData) to High(HistoryData) do HistoryData[i].FileName := 'Hallo'; // Array ausgeben for i := Low(HistoryData) to High(HistoryData) do s := s + HistoryData[i].FileName + #13#10; ShowMessage(s); end; end. |
Re: Stress mit Record aber warum?
Thema erledigt. Danke Leute, dass ihr euch so viel Zeit für meine Unfähigkeit genommen habt :wall: :wiejetzt:
Hab obendrüber in ner Schleife "begin ... end" vergessen, dadurch ist dort was schief gelaufen und hat mir irgendwie alles möglich im Programm versäbelt :idea: DANKE NOCHMAL AN ALLE!!! :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr. |
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