Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Lazarus image list + pas datei verschieben (https://www.delphipraxis.net/181846-lazarus-image-list-pas-datei-verschieben.html)

Gutelo 12. Sep 2014 04:42

Lazarus image list + pas datei verschieben
 
Ich habe in einer Lazarus Anwendung mehrere Forms: FormMain, Form1, Form2, ... Die unit pas Dateien zu den Forms liegen ueberwiegend direkt im Projekt-Verzeichnis. Leider habe ich zwei Forms aus versehen in einem Unterverzeichnis gespeichert. An sich kein Problem dachte ich mir. Umkopiert , aus dem projektexplorer raus genommen und neu eingeladen. Aber: eines der beiden Forms enthielt eine Timagelist mit 7mb an Bildern. Nach dem Verschieben der unit vom Unterverzeichnis in das Projekt-Verzeichnis lädt Lazarus zwar das Projekt, aber es kann das Form mit der Timagelist nicht mehr anzeigen. Das Programm stürzt auch ab wenn versucht wird auf die images in timagelist zuzugreifen.

Weiss jemand was da passiert ist?. Lazarus Bug? Kann das jemand reproduzieren?

Ich würde auch gerne wissen warum er die Bitmaps ncht in einem Ressource file ablegt sondern plain in die formdatei schreibt.

Gutelo

Jumpy 12. Sep 2014 08:02

AW: Lazarus image list + pas datei verschieben
 
Hätte man im laufenden Projekt nicht einfach das Form mittels "Speichern unter" an seinem neuen Ort speichern können und damit wäre das Thema durchgewesen?

Gutelo 12. Sep 2014 08:32

AW: Lazarus image list + pas datei verschieben
 
Hmm,

von der Sicherheitskopie bin ich jetzt mal so vorgegangen:

1.) das TImageList vom Form geloescht
2.) alle Images in ein Lazarus resource file gepackt und im main programm eingeladen.
3.) die Form auf der Festplatte vom Unterverzeichnis ins Hauptverzeichnis kopiert

Schonwieder das gleiche Problem. Er findet das Form nicht zur Laufzeit. Ich dreh langsam durch ...

himitsu 12. Sep 2014 08:37

AW: Lazarus image list + pas datei verschieben
 
Zitat:

Form1, Form2, ...
Die Units heißen doch nicht etwa auch noch Unit1, Unit2 usw.?

Wenn ich ein böser Compiler/Linker wäre, dann würde ich dir dafür absichtlich eine falsche Unit unterschieben. :stupid:


Das war nicht zufällig eine automatisch erstellte/initialisierte Form?

Gutelo 12. Sep 2014 08:50

AW: Lazarus image list + pas datei verschieben
 
Nee,

habs gefunden. Beim rausnehmen der units loescht er die

Application.CreateForm(...) in Projekt.lpr

Aber beim Hinzufuegen der units nach dem Umkopieren fuegt er die Forms nicht mehr hinzu. Bloede dass er sauber durchkompiliert und dann erst abstuerzt wenn man auf irgendwas zugreifen will, das auf dem entsprechenden Form liegt.

Meine Nerven ...

himitsu 12. Sep 2014 08:55

AW: Lazarus image list + pas datei verschieben
 
Warum sollte er nicht kompilieren?

Der Code ist ja vollkommen korrekt, denn woher soll der compiler wissen, ob du die Form nicht eventuell erst dann manuell erstellst, wen sie benötigt wird?

himitsu 12. Sep 2014 09:01

AW: Lazarus image list + pas datei verschieben
 
PS: Wenn du die Fehlermeldung genannt hattest "Zugriffsverletzung bei Adresse 00000xxx", dann hätte man dir gleich gesagt, dass DU etwas hast vergessen zu erstellen, da NIL-Pointer. :roll:

Gutelo 12. Sep 2014 16:43

AW: Lazarus image list + pas datei verschieben
 
oh, sorry, beim naechsten mal poste ich mit Fehlermeldung.

ICH hab was vergessen? Wenn Lazarus so klug ist den Eintrag beim Loeschen der alten Dateien aus dem Sourcecode zu entfernen, dann kann ich doch erwarten, dass es auch so klug ist beim Hinzufuegen der neuen (bzw. umkopierten) Dateien den Eintrag wieder zu erstellen. Er muss ja nur schauen ob eine gleichnamige frm-Datei existiert, wenn ja den Formname "erparsen" und anschliessend Application.CreateForm(Formname) zur Project.lpr hinzufuegen.

Danke Himitsu

Gutelo

Bernhard Geyer 12. Sep 2014 19:15

AW: Lazarus image list + pas datei verschieben
 
Zitat:

Zitat von Gutelo (Beitrag 1272415)
Wenn Lazarus so klug ist den Eintrag beim Loeschen der alten Dateien aus dem Sourcecode zu entfernen,

Es ist nicht klug sondern eine zwingende Notwendigkeit damit die Anwendung noch kompilierbar ist.

Zitat:

Zitat von Gutelo (Beitrag 1272415)
dann kann ich doch erwarten, dass es auch so klug ist beim Hinzufuegen der neuen (bzw. umkopierten) Dateien den Eintrag wieder zu erstellen. Er muss ja nur schauen ob eine gleichnamige frm-Datei existiert, wenn ja den Formname "erparsen" und anschliessend Application.CreateForm(Formname) zur Project.lpr hinzufuegen.

Solch ein verhalten würden aber 95% der User nicht wollen. Maximal schick wäre eine Rückfrage: "Wollen Sie das Formular automatisch erzeuge lassen".


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.

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