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
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#1

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

  Alt 25. Okt 2011, 12:07
HalloDeddyH,

vielen Dank für Deine Antwort.

Was meinst Du mit VAR-Parametern? Das sind Variablen, die deklariert werden...
In der Schleife wird aus dem zweidimensionalen Array eine TStringList befüllt, aus welche ich dann als CSV-Datei abspeichere.

Der Witz ist, dass der Fehler passiert, bevor eigentlich irgendetwas mit der TStringList oder dem Array gemacht wird...

Ich habe die Anweisung zur Ermittlung des Pfads jetzt unterhalb der Schleife positioniert, da wo er auch gebraucht wird. (Ich mag es lieber, wenn ich Pfade zu ANfang einer Function ermittel), dann bleibt der Fehler aus. Jedenfalls wirkt er sich nicht mehr so stark aus, denn jetzt wird das "Feld" 223 in der "zweiten Spalte" leer und nicht mit dem Pfad bestückt. Vorher stand in dem Feld eine Information, die mir dadurch verloren geht, aber ich bekomme bei meinem loadinfile (kommt in der nächsten Procedure) keinen Fehler mehr...

Warum wird an dieser Stelle mein Array verändert???

Vielen Dank

Ykcim
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 25. Okt 2011, 12:22
Du übergibst durch die Var-Deklaration Deine Arrays by Reference. Laut Code ist das aber unnötig, da Du die Originalwerte ja nicht innerhalb der Routine ändern willst. Du könntest einmal das Var durch Const ersetzen, das erscheint mir sinnvoller. Und wie sind TCols bzw. TRows deklariert? Irgendwie habe ich das Gefühl, dass Deine Indizes nicht stimmen.
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
 
#3

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

  Alt 25. Okt 2011, 12:46
Vorher stand in dem Feld eine Information, die mir dadurch verloren geht, aber ich bekomme bei meinem loadinfile (kommt in der nächsten Procedure) keinen Fehler mehr...

Warum wird an dieser Stelle mein Array verändert???
zum Teufel welches Array? oder verbirgt sich hinter Trows und TCols ein Array??????
und wenn sich Variablen gegenseitig überschreiben, dann sind meist Pointer (dyn.arrays) beteiligt, die in die Botanik zeigen.
Jetzt solltest Du z.B. die Bereichsprüfung und Konsorten aktivieren. Ich wette da ist irgendetwas faul.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#4

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

  Alt 25. Okt 2011, 12:54
Außerdem wird das übergebene "Cols" innerhalb Deiner Routine gar nicht verwendet....

Gruß
blauweiss
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#5

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

  Alt 25. Okt 2011, 13:04
Außerdem wird das übergebene "Cols" innerhalb Deiner Routine gar nicht verwendet....
Und ich bin gerade darüber gestolpert, dass Length mit pointerindizierten arrays Späne machen kann. Steht Dir kein Member wie Rows.Count zur Verfügung?

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 25. Okt 2011, 13: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
 
#7

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

  Alt 25. Okt 2011, 13: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
 
#8

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

  Alt 25. Okt 2011, 13: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
Benutzerbild von himitsu
himitsu

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

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

  Alt 25. Okt 2011, 22: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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 26. Okt 2011, 08: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
Antwort Antwort


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 12:39 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