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 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

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

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

  Alt 25. Okt 2011, 12:13
So wie ich das verstehe ist Rows ein 2-dimensionales Array in der Art [Zeile, Spalte]. Wenn dem so ist, dann ist die Schleife definitiv falsch, da ja damit "diagonal" gelesen wird. IMO müsste das stattdessen ungefähr so aussehen:
Delphi-Quellcode:
for i := Low(Rows) to High(Rows) do
  begin
    s := '';
    for j := Low(Rows[i]) to High(Rows[i]) do
      //String zusammensetzen
      s := s + Rows[i, j] + ',';
    Stringliste.Add(s);
  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 p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

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

  Alt 25. Okt 2011, 12:30
noch etwas Spekulatius:
hinter TRows könnte sich eine Tlist verbergen, der man teilweise die Daten geklaut hat???

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#3

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

  Alt 25. Okt 2011, 12:58
Was könnte dir weiterhelfen? (um beim Thema zubleiben)

Du kannst nur verschiedenes Durchprobieren...

- Das Gesamte Objekt in die Procdure rein geben?
- mal das ganze auserhalb der Procdure ausprobieren? (nicht schön, aber wenn es funzt...)
- mal ein Communikations-Objekt fütter und in die Procdure rein geben ...

Puhhh

den fehler in der Anwendung finden oder im Compiler wäre die Lösung, aber beides scheind mir schwirig zu sein...
Jörg
have FUN
  Mit Zitat antworten Zitat
Ykcim

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

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

  Alt 25. Okt 2011, 13:09
Hallo Zusammen,

vielen Dank für die rege Beteiligung der Fehlersuche!!! Finde ich stark!

Also das Array sieht wie folgt aus (ja, es verbirgt sich hinter den Cols and Rows):

Delphi-Quellcode:
type
    TRows = array of array of string; // [Cols, Rows]
    TCols = array of string;
Das Ganze ist dann wie eine Tabelle anzusehen, mit Daten, die aus einem MySQL Server kommen...

Cols wird tatsächlich nicht verwendet in der Function, aber ich übergebe immer die "ganze" Tabelle, daher immer Cols and Rows...

Cols sind die Spalten (wie in Excel "A", "B", "C";...)
Rows sind die Zeilen (wie in Excel 1, 2, 3, ...)

In der Schleife werden die Daten an das TStringList übergeben, mit jeweils den " um einen Text kenntlich zu machen. Diese Information benötige ich, wenn ich die Daten der *.csv Datei wieder in den MySQL-Server schicke.

Ich habe davon in diesem Programm noch drei weitere Stellen, wo zwei identische (Anzahl der Spalten mit anderen " Informationen) tadellos funktionieren...

Die Suche nach dem Fehler wird durch den Umstand, dass das Array aus ca. 50.000 Datensätzen besteht nicht erleichtert. Der Fehler tritt immer an der selben Stelle auf (Spalte 2, Zeile 223).

Ich hoffe, damit ein paar Informationslöcher gestopft zu haben...


Vielen Dank

Ykcim
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

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

  Alt 25. Okt 2011, 13:28
dann müsste der Zugriff folgendermaßen funktionieren ...

Delphi-Quellcode:
var
  col,row:Integer;
  s:String;
begin
  SetLength(Rows,10,10);
  For col := Low(Rows) to High(Rows) do
    For Row := Low(Rows[col]) to High(Rows[col]) do Rows[col,row] := IntToStr(col) + '_'+IntToStr(row);

  For col := Low(Rows) to High(Rows) do
    For Row := Low(Rows[col]) to High(Rows[col]) do
      begin
        if Row=High(Rows[col]) then s := s + Rows[Col,Row] + #13#10 else s := s + Rows[Col,Row] + ','
      end;
  Showmessage(s);
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

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

  Alt 25. Okt 2011, 13:45
Hatte ich das nicht bereits so ähnlich geschrieben?
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 Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

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

  Alt 25. Okt 2011, 13:53
@DeddyH

jepp, sorry, habe die #10 gerade erst gesehen ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

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
 
#9

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
Benutzerbild von himitsu
himitsu

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

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
Antwort Antwort
Seite 1 von 2  1 2      


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 20:33 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