ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
Moin,
ich habe folgendes Problem und bisher keine Lösung finden können. Ich möchte die Daten einer Maßnahme in einer Stringlist abspeichern und bei Abfrage der Kartei in einer Listbox anzeigen lassen. Man soll einfach einen Überblick über die zeitlichen Abstände erhalten, also eigentlich nichts wildes. Dies funktioniert auch soweit ohne Probleme.
Erstellen der Kartei: Kartei(..., TStringlist.create, ...)
Eintrag hinzufügen: Array[].Stringlist.Add(String)
Mein Problem taucht erst auf, wenn ich das Programm schließe (die Daten werden abgespeichert) und beim Programmneustart bekomme ich die ACCESS VIOLATION sobald ich irgendwas versuche mit der Stringlist zu machen. Sobald ich eine neue Stringlist erstelle und diese der Kartei zuweise hab ich keine Probleme, aber das ist ja nicht der Sinn der Sache. Ich komme nicht einmal an die gespeicherte Stringlist heran um sie auf einer neu erstellten zu kopieren und bearbeiten.
Vielen Dank schonmal für eure Hilfe.
(Ich hab die Grundmechaniken mal in der Oberstufe gelernt und helfe mir bei Problemen meist mit Google und dem Trial and Error Prinzip. Mein Wissen ist dementsprechend begrenzt)
ich habe folgendes Problem und bisher keine Lösung finden können. Ich möchte die Daten einer Maßnahme in einer Stringlist abspeichern und bei Abfrage der Kartei in einer Listbox anzeigen lassen. Man soll einfach einen Überblick über die zeitlichen Abstände erhalten, also eigentlich nichts wildes. Dies funktioniert auch soweit ohne Probleme.
Erstellen der Kartei: Kartei(..., TStringlist.create, ...)
Eintrag hinzufügen: Array[].Stringlist.Add(String)
Mein Problem taucht erst auf, wenn ich das Programm schließe (die Daten werden abgespeichert) und beim Programmneustart bekomme ich die ACCESS VIOLATION sobald ich irgendwas versuche mit der Stringlist zu machen. Sobald ich eine neue Stringlist erstelle und diese der Kartei zuweise hab ich keine Probleme, aber das ist ja nicht der Sinn der Sache. Ich komme nicht einmal an die gespeicherte Stringlist heran um sie auf einer neu erstellten zu kopieren und bearbeiten.
Vielen Dank schonmal für eure Hilfe.
(Ich hab die Grundmechaniken mal in der Oberstufe gelernt und helfe mir bei Problemen meist mit Google und dem Trial and Error Prinzip. Mein Wissen ist dementsprechend begrenzt)
Re: ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
Ich glaube, ohne den Code zu sehen, kann man dazu nicht viel sagen.
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
Hallo Silas,
ich weiß auch nicht so richtig wo dein Problem genau liegt, deshalb hoffe ich das ich nicht ganz daneben lieg. Jedenfalls hab ich mal schnell was zusammen geklickt von dem ich hoffe das es dir hilft.
Kannst es ja mal an schauen.
Viele Grüße
Bernd
ich weiß auch nicht so richtig wo dein Problem genau liegt, deshalb hoffe ich das ich nicht ganz daneben lieg. Jedenfalls hab ich mal schnell was zusammen geklickt von dem ich hoffe das es dir hilft.
Kannst es ja mal an schauen.
Viele Grüße
Bernd
- Dateianhänge
-
project1.zip
- (140.09 KiB) 31-mal heruntergeladen
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
Du kannst beim Start jede Zeile im Denugger anschauen und kontrollieren ob alle Objekte auch wirklich mit Create erzeugt wurden bevor du diese benutzt.
Wenn während dem Debuggen ein Fehler auftritt kann man in Lazarus im Menü:
Ansicht > Debuggfenster > Aufrufstack
herausfinden welche Funktionen nacheinander aufgerufen wurden.
Debugge so dein Projekt mal komplett durch und du wird die genaue Zeile mit dem Fehler finden und musst dir dann überlegen wie du den Code änderst damit der Fehler weg ist.
Wenn während dem Debuggen ein Fehler auftritt kann man in Lazarus im Menü:
Ansicht > Debuggfenster > Aufrufstack
herausfinden welche Funktionen nacheinander aufgerufen wurden.
Debugge so dein Projekt mal komplett durch und du wird die genaue Zeile mit dem Fehler finden und musst dir dann überlegen wie du den Code änderst damit der Fehler weg ist.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1058
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
Damit ist übrigens ein idealerweise lauffähiges Minimalbeispiel gemeint welches das Problem beinhaltet.theo hat geschrieben: So 19. Mai 2024, 12:15 Ich glaube, ohne den Code zu sehen, kann man dazu nicht viel sagen.
Oft hilft es übrigens, so ein Minimalbeispiel zu erstellen um selbst zu erkennen wo die Ursache liegt.
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
Wie bereits gesagt kann man ohne Code nur raten, aber kanns sein das du records erstellst die eine StringList enthalten und die records dann in ne Datei schreibst?
Das wird nicht funktionieren weil du damit nicht die StringListen in die Datei schreibst, sondern nur den Pointer, der nur in diesem Programdurchlauf valide ist. Was du tun musst ist deine Daten zu Serialisieren: https://de.wikipedia.org/wiki/Serialisierung
Das wird nicht funktionieren weil du damit nicht die StringListen in die Datei schreibst, sondern nur den Pointer, der nur in diesem Programdurchlauf valide ist. Was du tun musst ist deine Daten zu Serialisieren: https://de.wikipedia.org/wiki/Serialisierung
Re: ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
Moin, ja genau so ist es. Wenn das Programm geschlossen wird, speichert er das array of records in einer Datei (.dat) indem er einfach in einer Schleife write(File, Array) ausführt, so oft wie records im array vorhanden sind. Das mit dem Serialisieren habe ich mir angesehen, bin da aber noch nicht durchgestiegen, bzw. habe noch nicht herausgefunden wie das geht und was ich dafür machen muss.
Re: ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
Sorry, von was redest du? Oben war es eine StringList, und jetzt ist es ein Array of Records? Wie sind denn diese Records aufgebaut? Und wie ist der Code mit dem du die Records speicherst und zurückliest?Silas hat geschrieben: Do 23. Mai 2024, 14:23 Moin, ja genau so ist es. Wenn das Programm geschlossen wird, speichert er das array of records in einer Datei (.dat) indem er einfach in einer Schleife write(File, Array[ i ]) ausführt, so oft wie records im array vorhanden sind. Das mit dem Serialisieren habe ich mir angesehen, bin da aber noch nicht durchgestiegen, bzw. habe noch nicht herausgefunden wie das geht und was ich dafür machen muss.
-
- Beiträge: 1058
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: ACCES VIOLATION einer Stringlist im Record nach dem Laden der Datei
womit wir wieder beim Code-Beispiel sind