AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Fehler: Unkontrollierter Übertrag von Daten in ein Array
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler: Unkontrollierter Übertrag von Daten in ein Array

Ein Thema von Ykcim · begonnen am 25. Okt 2011 · letzter Beitrag vom 26. Okt 2011
Antwort Antwort
Seite 3 von 3     123   
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#21

AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array

  Alt 25. Okt 2011, 18:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array

  Alt 25. Okt 2011, 18:44
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array

  Alt 25. Okt 2011, 21:09
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
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#24

AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array

  Alt 25. Okt 2011, 21:18
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array

  Alt 26. Okt 2011, 07:51
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#26

AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array

  Alt 26. Okt 2011, 08:38
Das Ganze ist dann wie eine Tabelle anzusehen, mit Daten, die aus einem MySQL Server kommen...
Aha!
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

Geändert von sx2008 (26. Okt 2011 um 08:42 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#27

AW: Fehler: Unkontrollierter Übertrag von Daten in ein Array

  Alt 26. Okt 2011, 14:45
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
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 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