AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Access Violation bei setlength bei Int Array
Thema durchsuchen
Ansicht
Themen-Optionen

Access Violation bei setlength bei Int Array

Ein Thema von PhilmacFLy · begonnen am 14. Dez 2011 · letzter Beitrag vom 14. Dez 2011
 
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#1

Access Violation bei setlength bei Int Array

  Alt 14. Dez 2011, 12:20
Delphi-Version: 2005
Ok ich hab folgendes Problem ich bekomme bei einem Integer Array eine AV bei folgendem Code:
Delphi-Quellcode:
procedure Tfrm_gui_doku_laden.btt_ladenClick(Sender: TObject);
var
idtrain, tmpid: Integer;
idcount, tmpcount:Integer;
i: integer;
versioncount: Integer;
version: Integer;
begin
//i := 0;
versioncount := 0;
version := 42;
idcount := 0;
gesamt := 0;
versionen := 0;
//ShellExecute(Application.Handle,'open',PChar(ExtractFilePath(ParamStr(0)) +'Zeigtrai.exe'), Nil, Nil, SW_SHOW);
zConnection1.Connected := true;
    with ZReadonlyquery1 do
      begin
        SQL.TExt := 'Select ID_Training, Text from Training Where ID_Geraetenr = :ge and ID_KDNR = :kdnr' +
        ' and ID_such = :such and ID_Trainingsmodus = :mod Order By Version ASC';
        Params.ParamByName('ge').AsInteger := Geraetenummer;
        Params.ParamByName('kdnr').AsInteger := frm_gui_main.kunde.id;
        Params.ParamByName('such').AsInteger := idsuch;
        Params.ParamByName('mod').AsInteger := idmodus;
        Open;
        idtrain := FieldbyName('ID_Training').AsInteger; //Holt die ID der ersten Version eines Trainings
        Close;
        tmpid := idtrain;
        while version <> 0 do //Liest solang die Version aus bis keine neue Version kommt
          begin //dient dem zweck das ich die größe des Arrays festlegen kann
                               //nach der Anzahl der Versionen und anzahl der Trainingswerte pro Version
            Sql.Text := 'Select Versionsaenderung From Training Where Id_Training = :id';
            Params.ParamByName('id').AsInteger := tmpid;
            Open;
            version := FieldbyName('Versionsaenderung').AsInteger;
            Close;
            inc(versioncount);
            SQL.TExt := 'Select Count(ID_Training) From Trainingswerte Where ID_Training = :id';
            Params.ParamByName('id').AsInteger := tmpid;
            Open;
            tmpcount := FieldbyName('Count').AsInteger;
            Close;
            if tmpcount > idcount then
              idcount := tmpcount;
            tmpid := version;
          end;
        setlength(wertarr, versioncount+1, idcount);
        if checkbox1.Checked then
          setlength(anzahlarr, versioncount+1); //<---- Hier (Checkbox is nur zum testen obs wirklich das ist)
        for i := 0 to versioncount+1 do
          anzahlarr[i] := 0;
        i := 0;
        versionen:=versioncount;
        tmpid := idtrain;
        versioncount := 0;
        version := 42;
        while version <> 0 do
          begin //Liest dann die Werte aus in das array
            Sql.Text := 'Select Versionsaenderung From Training Where Id_Training = :id';
            Params.ParamByName('id').AsInteger := tmpid;
            Open;
            version := FieldbyName('Versionsaenderung').AsInteger;
            Close;
            inc(versioncount);
            Sql.Text := 'Select * From Trainingswerte Where ID_Training = :id Order By Datum, Startzeit';
            Params.ParamByName('id').AsInteger := tmpid;
            Open;
            while not eof do
              begin
                wertarr[versioncount, i].Datum := FieldbyName('Datum').AsDateTime;
                wertarr[versioncount, i].Start := FieldbyName('Startzeit').AsDateTime;
                wertarr[versioncount, i].Stop := FieldbyName('Stopzeit').AsDateTime;
                wertarr[versioncount, i].Fehlerl := FieldbyName('Fehlerlinks').AsInteger;
                wertarr[versioncount, i].Fehlerr := FieldbyName('Fehlerrechts').AsInteger;
                wertarr[versioncount, i].startpos := FieldbyName('Startpos').AsInteger;
                wertarr[versioncount, i].stoppos := FieldbyName('Stoppos').AsInteger;
                next;
                inc(i);
              end;
            Close;
            anzahlarr[versioncount]:=i;
            gesamt:=gesamt+i;
            tmpid := version;
          end;
      end;
    Frm_ZeigTr:=TFrm_ZeigTr.Create(self);
    Frm_ZeigTr.ShowModal;
    zConnection1.Connected := false;
end;
Wenn die Checkbox nicht gecheked ist passiert nichts wenn sie gecheckt ist AV, aber auch nicht immer das ist das seltsame.

Hier noch ein paar Definitionen:
Delphi-Quellcode:
  public
    wertarr: Array of Array of TTrainwerte;
    anzahlarr: Array of Integer;
    versionen,gesamt: Integer;
  end;
und von TTrainwerte
Delphi-Quellcode:
  TTrainwerte=class
  public
  id: Integer;
  Datum: Tdate;
  startzeit: TTime;
  stopzeit: TTime;
  FehlerL: Integer;
  FehlerR: Integer;
  Startpos: Integer;
  Stoppos: Integer;
  Notiz: String;
  procedure getvalues(Query: TZquery); overload;
  procedure getvalues(Query: TZReadOnlyQuery); overload;
  procedure insertvalues(Query: TZquery); overload;
  procedure insertvalues(Query: TZReadOnlyquery); overload;
  destructor Destroy();
  end;
Wäre ehct glücklich wenn mir jemand helfen könnte.
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
 


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:30 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-2025 by Thomas Breitkreuz