Error 216 bei showmodal

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Oldeman
Beiträge: 24
Registriert: Do 9. Jun 2022, 18:45

Error 216 bei showmodal

Beitrag von Oldeman »

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?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
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

Beitrag von Winni »

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

Oldeman
Beiträge: 24
Registriert: Do 9. Jun 2022, 18:45

Re: Error 216 bei showmodal

Beitrag von Oldeman »

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.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

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.
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.
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).

Oldeman
Beiträge: 24
Registriert: Do 9. Jun 2022, 18:45

Re: Error 216 bei showmodal

Beitrag von Oldeman »

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.

Sieben
Beiträge: 202
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

Beitrag von Sieben »

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.

Oldeman
Beiträge: 24
Registriert: Do 9. Jun 2022, 18:45

Re: Error 216 bei showmodal

Beitrag von Oldeman »

@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.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Error 216 bei showmodal

Beitrag von wp_xyz »

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.

Oldeman
Beiträge: 24
Registriert: Do 9. Jun 2022, 18:45

Re: Error 216 bei showmodal

Beitrag von Oldeman »

@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...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

Oldeman hat geschrieben:
Mo 30. Jan 2023, 17:06
@af0815: Bitte um einen Tip für ein SourceControl Tool.
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/

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).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Error 216 bei showmodal

Beitrag von wp_xyz »

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...
Ich weiß. In der damaligen Diskussion sind schlechte Ratschläge gegeben worden...

[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.
Zusammengefasst: Es kommt drauf an... Beim Kopieren/Verschieben von Dateien kann man viel falsch machen.

Oldeman
Beiträge: 24
Registriert: Do 9. Jun 2022, 18:45

Re: Error 216 bei showmodal

Beitrag von Oldeman »

Also Delphi ist da wohl etwas toleranter... Zumindest habe ich dort derartige Probleme nie gehabt.

Jedenfalls: Danke!

Antworten