Autor Beitrag
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 05.08.06 20:19 
tja, mal wieder ratlos, huntermal die gleiche procedure geschrieben, doch jetzt mag Delphi nicht mehr... wahrscheinlich steh ich einfach auf dem schlauch. weshalb bringt er in der zeile 10, eine (schreib-)zugriffsverletzung? der record wurde ordnungsgemäss auf den heap initialisiert und der variablen "rec" zugewiesen. die datenabfrage und zuweisung funktioniert ein paar cm. weiter prima... weshalb krachts? :gruebel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure tDefDB.GetS(const X: tList);
var
 i: integer;                        //laufvariable
 rec: pDataRec;                     //rückgabestruktur als pointer
begin
 for i := 0 to LS.Count - 1 do      //gehe Liste durch
 begin                              //für jedes Listelement
  new(rec);                         //reserviere speicher
  fillchar(rec^, sizeof(rec^), #0); //initalisiere spreicher
  rec^.LK   := pRec(LS)^.S;         // <-- Access Violation
  rec^.Desc := pRec(LS)^.Desc;      //weise wert zu
  X.Add(rec);                       //hänge in an die andere TList an, zur Rückgabe
 end;
end;
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 05.08.06 20:26 
tja, hat sich erledigt, hab die laufvariable vergessen. sorry.

So funktionierts...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure tDefDB.GetS(const X: tList);
var
 i: integer;                        //laufvariable
 rec: pDataRec;                     //rückgabestruktur als pointer
begin
 for i := 0 to LS.Count - 1 do      //gehe Liste durch
 begin                              //für jedes Listelement
  new(rec);                         //reserviere speicher
  fillchar(rec^, sizeof(rec^), #0); //initalisiere spreicher
  rec^.LK   := pRec(LS[i])^.S;      //weise wert zu
  rec^.Desc := pRec(LS[i])^.Desc;   //weise wert zu
  X.Add(rec);                       //hänge in an die andere TList an, zur Rückgabe
 end;
end;