Einzelnen Beitrag anzeigen

Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Ungültige Zeigeroperation

  Alt 1. Jan 2020, 15:54
Du hast da gleich mehrere Fehler in deinem Code:

1. Die Objekte SK und SL werden niergends erstellt. Sind also beim Zugriff der ersten ZK.xxxx oder ZL.xxx noch nil oder zeigen auf einen nungültigen Memoryberech, weil du da globale Variablen nuzzt. Damit ist eine AV die logische Folge.

2. Du gibst das im unteren Teil des Codes SK frei mit SK.Free. Also danach ist SK ungültig und zeigt auf einen ungülitgen Memorybereich. Eine Zeile später greifst du ber gleich wieder auf diese nun ungültige Objektinstanz zu, was dann zu dem Invalid Pointer führt.

3. Solltest du so Sachen in einem try/finally schützen.

Delphi-Quellcode:
sk := TStringlIst.Create;
sl := TStringlIst.Create;
try
  ... // deine Code, der mit sk arbeitet.
finally
  sk.free; // Am Schluss, wenn du sk/sl nicht mehr benötigst, sk/sl freigeben
  sl.Free;
end;

Geändert von Rolf Frei ( 1. Jan 2020 um 15:57 Uhr)
  Mit Zitat antworten Zitat