![]() |
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; |
AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
Vermutlich fehlt irgendwo das passende
Delphi-Quellcode:
Module := TF_Modules.Create(Nil);
|
AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
TF_Modules wird initiert, wie im ersten Code-Beispiel zu sehen.
Module ist ein Dataset. |
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 |
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. |
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. |
AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
Module ist ein Dataset das auf F_Modules liegt
ist ein "Doppelpost" ![]() |
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 |
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?
|
AW: SIGSEGV / Stack-Overflow beim Öffnen einer TDBF
Zitat:
Die Dateiendung DBF besagt nicht zwingend, dass es sich um eine dbase-Datenbankdatei handelt. Stimmt die Dateistruktur (annähernd) mit dem dort beschriebenen überein? ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 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