Error 216 bei showmodal
Error 216 bei showmodal
Nachdem ich das Projekt an dem ich arbeite auf einen brauchbaren Stand gebracht hatte, wollte ich mein Sourcen-Verzeichnis aufräumen und habe sämtliche Module mit der IDE in ein neues Verzeichnis kopiert, wobei ich ganz bewusst das Backup-Verzeichnis herangezogen habe. Jetzt kann ich das Programmsystem nicht mehr starten, weil ich bei zwei Modulen bei ShowModal einen Error 216 (Adressverletzung) bekomme. Die anderen Module sind so weit OK.
Mir fällt auf, dass das die beiden letzten Module sind, an denen ich gearbeitet habe sind. Daher vermute ich ein Konsistenzproblem. Auf das usprüngliche Verzeichnis möchte ich lieber nicht mehr zugreifen, da ich dabei in Teufels Küche kommen könnte ...
Weiß jemand, wie ich das lösen könnte?
Mir fällt auf, dass das die beiden letzten Module sind, an denen ich gearbeitet habe sind. Daher vermute ich ein Konsistenzproblem. Auf das usprüngliche Verzeichnis möchte ich lieber nicht mehr zugreifen, da ich dabei in Teufels Küche kommen könnte ...
Weiß jemand, wie ich das lösen könnte?
- af0815
- Lazarusforum e. V.
- Beiträge: 6777
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Error 216 bei showmodal
Erstmal alles in ein externes Backup wegkopieren. Wegen solcher Probleme verwende ich immer ein SourceControlSystem (Git, SVN). Es kann schon mal passieren, das man sich was zerschiesst. Besonders dann, wenn man zB. das *.pas File wegkopiert, die *:lfm aber vergisst.
Was heisst eigentlich "Jetzt kann ich das Programmsystem nicht mehr starten". Startet Lazarus nicht, oder das erstellte Programm ? Auch mit der IDE in ein neues Verzeichnis kopiert, normalerweise zieht Lazarus dann die Projektinfos mit den Pfaden nach und fragt auch ob man die alten Dateien gelöscht haben will.
Hasst du in den Projektoption mal alle Debuggingtools eingeschalten ? Beispiel siehe hier viewtopic.php?f=9&t=14674&p=132315&hili ... ng#p132315
Error 216 ist ganz einfach eine Speicherverletzung, kann sein, das du irgendein Objekt noch nicht erzeugt hast oder zu früh gelöscht.
Was heisst eigentlich "Jetzt kann ich das Programmsystem nicht mehr starten". Startet Lazarus nicht, oder das erstellte Programm ? Auch mit der IDE in ein neues Verzeichnis kopiert, normalerweise zieht Lazarus dann die Projektinfos mit den Pfaden nach und fragt auch ob man die alten Dateien gelöscht haben will.
Hasst du in den Projektoption mal alle Debuggingtools eingeschalten ? Beispiel siehe hier viewtopic.php?f=9&t=14674&p=132315&hili ... ng#p132315
Error 216 ist ganz einfach eine Speicherverletzung, kann sein, das du irgendein Objekt noch nicht erzeugt hast oder zu früh gelöscht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Error 216 bei showmodal
Hi!
Werden die zwei Forms automatisch erzeugt, oder erzeugst Du die dynamisch?
Wenn die noch garnicht erzeugt sind und Du machst ein Show/Showmodal, gibt es meiner Erinnerung nach ein 216 Crash.
Winni
Werden die zwei Forms automatisch erzeugt, oder erzeugst Du die dynamisch?
Wenn die noch garnicht erzeugt sind und Du machst ein Show/Showmodal, gibt es meiner Erinnerung nach ein 216 Crash.
Winni
Re: Error 216 bei showmodal
Danke.
@Winni: die Module sind automatisch erzeugt worden.
@af0815: das mit dem Einschalten aller Debugging Tools habe ich gemacht. Resultat: nun kriege ich Error 210, object reference is nil. Die Module existieren aber definitiv, sie sind ja auch mit kompiliert werden. Die .lfm hat der Compiler lt. Uhrzeit für beide beim letzten Mal neu erzeugt.
Die Abstürze passieren exakt bei der Durchführung des ShowModal. Ich habe einen Breakpoint auf den ersten Befehl in dem einen aufgerufenen Modul gesetzt. Dieser Breakpoint wird nicht erreicht.
Kann System nicht starten: damit meine ich, das das Einstiegsmodul wohl losläuft, nach ein paar Befehlszeilen aber nix geht, weil ohne das eine Modul nix funktioniert.
@Winni: die Module sind automatisch erzeugt worden.
@af0815: das mit dem Einschalten aller Debugging Tools habe ich gemacht. Resultat: nun kriege ich Error 210, object reference is nil. Die Module existieren aber definitiv, sie sind ja auch mit kompiliert werden. Die .lfm hat der Compiler lt. Uhrzeit für beide beim letzten Mal neu erzeugt.
Die Abstürze passieren exakt bei der Durchführung des ShowModal. Ich habe einen Breakpoint auf den ersten Befehl in dem einen aufgerufenen Modul gesetzt. Dieser Breakpoint wird nicht erreicht.
Kann System nicht starten: damit meine ich, das das Einstiegsmodul wohl losläuft, nach ein paar Befehlszeilen aber nix geht, weil ohne das eine Modul nix funktioniert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6777
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Error 216 bei showmodal
nil sagt, das die Elemente nicht existieren. Kompilieren hat damit nichts zu tun. Was sein kann (ist ein klassiker), das diese nicht mehr automatisch erstellt werden.Oldeman hat geschrieben: So 29. Jan 2023, 20:46 Resultat: nun kriege ich Error 210, object reference is nil. Die Module existieren aber definitiv, sie sind ja auch mit kompiliert werden.
Also hinein in die Projektoptionen und einmal die automatisch erstellten Formulare kontrollieren. Das erste ist dein Hauptfenster, die anderen werden erstellt sind aber nicht die was beim Start angezeigt werden. Fehlen die , kracht es.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Error 216 bei showmodal
Spannend:
Unter "Einstellungen für Projekt ..." habe ich das eine der beiden Module rechts, als verfügbar gefunden und nach links geschoben. Es lässt sich jetzt nach Kompilierung aufrufen. Das andere war dort aber schon und führt nach wie vor zum Absturz 210.
Unter "Einstellungen für Projekt ..." habe ich das eine der beiden Module rechts, als verfügbar gefunden und nach links geschoben. Es lässt sich jetzt nach Kompilierung aufrufen. Das andere war dort aber schon und führt nach wie vor zum Absturz 210.
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: Error 216 bei showmodal
Dann schieb doch mal das fragliche Modul von links nach rechts, kompilier einmal durch ohne groß zu testen, dann schiebs wieder zurück nach links und teste. Du kannst auch einfach mal in der *.lpr nachschauen, ob dort ein entsprechendes CreateForm() für das fragliche Modul eingetragen ist. Wichtig ist auf jeden Fall, dass du die beiden Einträge wieder 'in sync' bekommst.
Re: Error 216 bei showmodal
@Sieben:
Hin-und herkopieren hat nichts genutzt.
Aber: Merkwürdig: in dem neuen, eigentlich ausschließlich verwendeten Programmdirectory war keine .lpr Datei. Ich habe dann die aus dem alten Verzeichnis hineinkopiert. Dort fehlte tatsächlich das CreateForm. Ich habe es eingetragen. Habe mir aber auch die .lpi-datei angesehen. Dort war bei dem Modul der alte Pfad eingetragen, den Lazarus eigentlich gar nicht finden konnte, das gilt auch für die .lpr-Datei, da ich den Namen des Verzeichnisses sicherheitshalber geändert hatte. Das habe ich auch korrigiert.
Und jetzt geht es.
Danke an alle, die mir Tips gegeben haben.
Hin-und herkopieren hat nichts genutzt.
Aber: Merkwürdig: in dem neuen, eigentlich ausschließlich verwendeten Programmdirectory war keine .lpr Datei. Ich habe dann die aus dem alten Verzeichnis hineinkopiert. Dort fehlte tatsächlich das CreateForm. Ich habe es eingetragen. Habe mir aber auch die .lpi-datei angesehen. Dort war bei dem Modul der alte Pfad eingetragen, den Lazarus eigentlich gar nicht finden konnte, das gilt auch für die .lpr-Datei, da ich den Namen des Verzeichnisses sicherheitshalber geändert hatte. Das habe ich auch korrigiert.
Und jetzt geht es.
Danke an alle, die mir Tips gegeben haben.
- af0815
- Lazarusforum e. V.
- Beiträge: 6777
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Error 216 bei showmodal
Schön das es wieder geht.
Ich lege dir an Herz dich mit einem SourceControl Tool und auch Backupsystem zu beschäftigen. Wenn man etwas mehr mit Projekten arbeitet, so kann das einem sehr viel helfen, vor allen, wenn man sich mal das Projekt abschießt. Vor allen kann man auch vergleichen, was man geändert hat.
Ich lege dir an Herz dich mit einem SourceControl Tool und auch Backupsystem zu beschäftigen. Wenn man etwas mehr mit Projekten arbeitet, so kann das einem sehr viel helfen, vor allen, wenn man sich mal das Projekt abschießt. Vor allen kann man auch vergleichen, was man geändert hat.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Error 216 bei showmodal
Generell um ein Projekt zu kopieren: Das nie in der IDE tun, sonst werden Pfade verändert. Immer die IDE beenden, das Projekt im Betriebssystem in den neuen Ordner kopieren und dann die IDE neu starten.
Re: Error 216 bei showmodal
@af0815: Bitte um einen Tip für ein SourceControl Tool.
@wp_xyz: Mir ist empfohlen worden, nur mit der IDE zu kopieren. Sonst hätte ich das ja nicht so gemacht. Anders ist es ja einfacher...
@wp_xyz: Mir ist empfohlen worden, nur mit der IDE zu kopieren. Sonst hätte ich das ja nicht so gemacht. Anders ist es ja einfacher...
- af0815
- Lazarusforum e. V.
- Beiträge: 6777
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Error 216 bei showmodal
SVN und GIT sind die populärsten Tools. Für Windows gibt es TortoiseSVN https://tortoisesvn.net/index.de.html oder TortoiseGIT https://tortoisegit.org/Oldeman hat geschrieben: Mo 30. Jan 2023, 17:06 @af0815: Bitte um einen Tip für ein SourceControl Tool.
Sowohl GIT als auch SVN können mit Server als auch ohne Server verwendet werden (Ja es geht auch bei SVN, dann aber bitte nicht auf ein Netzlaufwerk). SVN ist ein älteres System, das bei den meisten von GIT bereits abgelöst wurde. Und ja, es bedingt eine Lernkurve und manchmal BST (Blood & Sweat & Tears).
Freies deutsches Git Buch http://gitbu.ch/
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Error 216 bei showmodal
Ich weiß. In der damaligen Diskussion sind schlechte Ratschläge gegeben worden...Oldeman hat geschrieben: Mo 30. Jan 2023, 17:06 @wp_xyz: Mir ist empfohlen worden, nur mit der IDE zu kopieren. Sonst hätte ich das ja nicht so gemacht. Anders ist es ja einfacher...
[EDIT]
Zur Klarstellung:
- Wenn man ein Projekt duplizieren möchte, z.B. um an der Kopie Änderungen vorzunehmen, um ein neues Projekt daraus zu generieren, IDE beenden und das Projekt im Betriebssytem in den neuen Ordner kopieren.
- Wenn man die Dateien eines Projektes umstrukturieren möchte, z.B. alle Formulare in einen Ordner "Forms", alle normalen Units in einen Order "Units" etc. verschieben möchte, die Dateien einzeln in der IDE laden und per "File" > "Save As" in den neuen Ordner speichern; die Frage, ob die alte Datei gelöscht werden soll, bejahen. So werden alle Bezüge auf die verschobene Datei automatisch von der IDE angepasst, und es gibt die betreffende Datei im Projekt nur 1x.
- Wenn man in einem Projekt eine Unit aus einem anderen Projekt benötigt, aber den Aufwand mit einem separaten Package oder einem "gemeinsamen" Ordner nicht treiben möchte, würde ich zur Sicherheit die IDE beenden und die Datei im Betriebssystem in den Projekt-Ordner kopieren, und die Datei dann bei wieder laufender IDE im Projektinspektor in das aktuelle Projekt aufnehmen. Andernfalls besteht die Gefahr, dass bei Unachtsamkeit die Datei am Ursprungsort von der IDE gelöscht wird.
Re: Error 216 bei showmodal
Also Delphi ist da wohl etwas toleranter... Zumindest habe ich dort derartige Probleme nie gehabt.
Jedenfalls: Danke!
Jedenfalls: Danke!