Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FreePascal SIGSEGV / Stack-Overflow beim Öffnen einer TDBF (https://www.delphipraxis.net/206437-sigsegv-stack-overflow-beim-oeffnen-einer-tdbf.html)

ManniSt 21. Dez 2020 12:50

Datenbank: dBase • Version: IV • Zugriff über: TDBF

SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
Nach dem Aufruf eines neuen Formulars und dem Öffnen einer DBF in diesem neuen Formular erscheint immer ein Fehler SISEGV in Lazarus und ein Stack-Overflow bei der Ausführung der Anwendung außerhalb von Lazarus.
Das Ganze läuft unter Win 10.

Identische Aufrufe von 2 anderen Formularen erzeugen keine Fehler.

Woran kann das liegen?
-------------------------------------------------------------------
Aufruf aus Formular TF_Menu:

procedure TF_Menu.Men_ModulesClick(Sender: TObject);

begin
MModulNr := Module.Fields.FieldByName('NR').Value;
Module.close;

F_Menu.Visible := false; // Aufrufende Form auf unsichtbar
F_Modules := TF_Modules.Create(Nil); // Neue Form wird erstellt
F_Modules.ShowModal; // Neue Form wird angezeigt
FreeAndNil(F_Modules); // Neue Form wieder freigeben
F_Menu.Visible := true;
// usw. …
end;

Neues Formular TF_Modules mit dem Fehler bei Module.Open:

procedure TF_Modules.FormCreate(Sender: TObject);

begin
Module.FilePathFull := Modules_Lw;
Module.ReadOnly := false;
Module.Open; // Hier entsteht der Fehler
Module.IndexName := 'NR';
end;

Delphi.Narium 21. Dez 2020 13:12

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
Vermutlich fehlt irgendwo das passende
Delphi-Quellcode:
Module := TF_Modules.Create(Nil);

ManniSt 21. Dez 2020 13:17

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
TF_Modules wird initiert, wie im ersten Code-Beispiel zu sehen.
Module ist ein Dataset.

Klaus01 21. Dez 2020 13:26

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
F_Modules wird mit TF_Modules initiert.

modules wird in Deinem Beispiel nirgendwo initiert.

Grüße
Klaus

ManniSt 21. Dez 2020 13:31

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
Seltsam, verstehe ich nicht: In den anderen beiden Fällen funktioniert das doch auch.

Wieso muss ein Dataset, das auf dem Formular definiert initiert werden? Gem. Dokumentation über TDbf wird ein Dataset mit TDataset.Open, auf aktiv gesetzt und kann verwendet werden, was ich auch schon mehrere Dutzend Male so gemacht habe.

Wenn Du das Formular meintest, es wird mit F_Modules := TF_Modules.Create(Nil);
initiert und mit F_Modules.ShowModal; angezeigt, genauso wie die anderen Dutzend Formulare.

Delphi.Narium 21. Dez 2020 14:15

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
Der Fehler tritt aber bei Module und nicht bei F_Modules.

Sollte Module = F_Modules sein, so zeig' uns bitte den vollständigen Quelltext. Die Fragmente reichen nicht im leisesten Ansatz aus, um sinnvolle Rückschlüsse auf eine mögliche Fehlerursache ziehen zu können.

Lemmy 21. Dez 2020 14:37

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
Module ist ein Dataset das auf F_Modules liegt

ist ein "Doppelpost"
https://www.lazarusforum.de/viewtopic.php?f=17&t=13312

ManniSt 21. Dez 2020 15:47

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
Das ist interessant. Weise ich dem TDBF eine andere DBF zu, funktioniert es.
Ich habe auch die fragliche dbf umbenannt: Kein Erfolg
Ich habe die fragliche DBF verschoben und umbenannt: Kein Erfolg

jaenicke 21. Dez 2020 16:29

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
Wie sieht denn der Stacktrace in dem Moment aus? Kannst du nicht schrittweise durch die Methode Open durchgehen und schauen wo es knallt?

Delphi.Narium 21. Dez 2020 16:47

AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
 
Zitat:

Zitat von ManniSt (Beitrag 1479634)
Das ist interessant. Weise ich dem TDBF eine andere DBF zu, funktioniert es.
Ich habe auch die fragliche dbf umbenannt: Kein Erfolg
Ich habe die fragliche DBF verschoben und umbenannt: Kein Erfolg

Dann tippe ich mal auf 'ne defekte DBF oder eine nicht DBF mit der Dateiendung DBF.

Die Dateiendung DBF besagt nicht zwingend, dass es sich um eine dbase-Datenbankdatei handelt.

Stimmt die Dateistruktur (annähernd) mit dem dort beschriebenen überein? https://www.dbf2002.com/dbf-file-format.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz