![]() |
AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array
Zu Testzwecken kannst du auch aus allen (!) Arrays vorübergehend Statische machen, mit genau den passenden Werten und die Setlength auskommentieren, und wie schon gesagt wurde, die Bereichsprüfung ect. einschalten. Dann siehst du, wo’s knallt. Vermutlich irgendwo Zeilen- und Spaltenindex vertauscht oder ein Index kleiner Null bzw. größer Count-1. Und nenn das Ding vielleicht TGridArray, TRows ist definitiv verwirrend.
|
AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array
Oder wie schon gesagt die Parameter nicht als Var deklarieren und auf das Array wie von Bummi und mir gezeigt zugreifen. Wobei man sich überlegen könnte, Cols als statisches Array zu deklarieren, da anscheinend immer die gleiche Elementanzahl vorausgesetzt wird.
|
AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array
Hallo Zusammen,
ich habe jetzt noch nicht alle Tips ausprobiert. Werde das Thema morgen angehen und Berichten. Aber kann mir jemand noch etwas zur Bereichprüfung sagen und wie ich die aktiviere. Ich habe die noch nie verwendet. @DeddyH: Der Tip mit den Const hat leider nicht funktioniert - der Eintrag wird dennoch verändert... Gute Nacht - bis morgen - ich mach jetzt Feieradend Ykcim |
AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array
Hab grad kein TDE zur Hand, aber
Menü > Projekt > Optionen > Compilieren > Laufzeitfehler > Bereichsprüfung Oder über einen Kompilerschalter (welchen ich hier schonmal genannte hatten) im Quellcode, also in der/den Unit(s), wo es benötigt wird. |
AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array
Ich habe mal eine Mini-Demo erstellt, läuft einwandfrei (nur ein Memo und ein Button auf der Form):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type TSpalten = array [1 .. 3] of string; TZeilen = array of TSpalten; var Zeilen: TZeilen; i: integer; s: string; begin (* Dimensionieren *) SetLength(Zeilen, 10); try (* und befüllen *) for i := Low(Zeilen) to High(Zeilen) do begin Zeilen[i, 1] := Format('Feld1 - %d', [i + 1]); Zeilen[i, 2] := Format('Feld2 - %d', [i + 1]); Zeilen[i, 3] := Format('Feld3 - %d', [i + 1]); end; (* Nun auslesen und in Memo ausgeben *) Memo1.Lines.BeginUpdate; try Memo1.Lines.Clear; for i := Low(Zeilen) to High(Zeilen) do begin (* Statisches Array -> Direktformatierung ohne Probleme *) s := Format('"%s",%s,"%s"', [Zeilen[i, 1], Zeilen[i, 2], Zeilen[i, 3]]); Memo1.Lines.Add(s); end; finally Memo1.Lines.EndUpdate; end; finally (* Aufräumen *) SetLength(Zeilen, 0); end; end; |
AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array
Zitat:
Mir scheint dass dein gesamter Ansatz völlig umständlich ist. Es gibt Komponenten, die eine sogenannte Memory-Table oder auch Memory-Dataset nachbilden. Das heisst, du kannst selbst Felder mit Namen und Datentyp (string, integer, Boolean,...) definieren und so viele Datensätze einfügen wie der Hauptspeicher hergibt. Das Speichern der Daten als CSV-Datei und später erneute Laden aus der CSV-Datei ist sehr einfach zu bewerkstelligen. Auch das Löschen,Ändern und Anzeigen von Datensätzen ist total einfach (du brauchst dazu nur ein TDataSource und ein TDBGrid bzw. TDBEdits). Also ich würde an deiner Stelle den Code wegwerfen und die Sache mit Hilfe einer Memory-Table angehen. PS: du kannst auch nach best. Feldern Sortieren, Filtern und Suchen |
AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array
Hallo Zusammen,
ich habe gerade die Bereichsprüfung aktiviert und keinen Fehler bekommen. Das mag daran liegen, dass der Fehler nicht mehr auftritt. Das habe ich aber erst danach bemerkt... Gestern ist er jedes Mal zuverlässig aufgetreten. Ich hatte gestern Abend noch an einem anderen Fehler gearbeitet, der in der vorgelagerten Procedure steckte und dafür sorgte, dass mein Programm nur einmal durchlief und danach immer Fehler machte. Die Ursache war ein falscher Index... Ich habe da zwar keinen Zusammenhang gesehen, aber auch in der Version von gestern Abend funktioniert es jetzt. Daher kann / brauche ich jetzt erst einmal nicht weiter zu suchen. Ich möchte mich an dieser Stelle für die tolle Unterstützung bedanken! VIELEN DANK Ykcim |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 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 by Thomas Breitkreuz