Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Formularelemente nil (https://www.delphipraxis.net/207034-formularelemente-nil.html)

Teesäufer 19. Feb 2021 00:14

Formularelemente nil
 
Hallo zusammen,

ich habe ein Problem: Ich habe eine Anwendung mit mehreren Formularen. Jetzt kommt aber etwas, was mich verrückt macht: Ich möchte ein weiteres Formular öffnen. Aber sämtliche Elemente dieses - bereits gestalteten Formulars - sind NIL. Dementsprechend wird sofort eine Fehlermeldung ausgelöst, wenn ich darauf zugreifen möchte. Habt ihr eine Ahnung, was ich falsch mache?

Der Teesäufer

haentschman 19. Feb 2021 05:09

AW: Formularelemente nil
 
Moin...:P
Zitat:

wenn ich darauf zugreifen möchte.
1. Formular erzeugt? Dynamisch oder automatisch?
2. Form1.xxx oder TForm1.xxx?

Zeige mal etwas Quellcode...:zwinker:

Uwe Raabe 19. Feb 2021 07:47

AW: Formularelemente nil
 
Keine Formular-Resuóurce eingebunden?

DieDolly 19. Feb 2021 08:03

AW: Formularelemente nil
 
Zitat:

Dementsprechend wird sofort eine Fehlermeldung ausgelöst, wenn ich darauf zugreifen möchte. Habt ihr eine Ahnung, was ich falsch mache?
"Zugreifen" im Editor oder zur Laufzeit im Programm?

himitsu 19. Feb 2021 12:14

AW: Formularelemente nil
 
Zitat:

Keine Formular-Resuóurce eingebunden
Dann kommt beim Create der Form eine Fehlermeldung "Ressource nicht gefunden", denn bei allen Nachfahren von TForm wird (standardmäßig) die Ressource geladen und wenn nicht da, dann peng.

mögliche Ursachen:
* INHERITED fehlt (z.B. wenn Constructor überschrieben)
* die Komponenten heißen in der DFM anders, als die Felder in der Klasse
* die Felder (Variablen) für die Komponenten in der Klasse sind nicht PUBLISCHED
* ...

Teesäufer 19. Feb 2021 19:29

AW: Formularelemente nil
 
Hallo zusammen,

also zuerst einmal: Das Formular wurde generiert, als ich es zusammengestöpselt habe. Genau wie die anderen auch (das hat mich ja auch so irritiert). Das hier ist der Quellcode:

Code:
 TForm4 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure schreibeBericht(stufe: Integer; anzahlAufgaben: Integer; Art: String);

  private

  public


  end;
...

var Form4: TForm4;

...

Form4:=TForm4.create(application);
  Form4.show;
Der Fehler wird zur Laufzeit ausgeführt.

PS an Uwe Raabe: Es werden alle Bibliotheken eingebunden, die auch bei den anderen eingebunden werden ...

himitsu 19. Feb 2021 19:59

AW: Formularelemente nil
 
Im FormDesigner siehst du also deine Komponenten?

Bzw. wie sieht die DFM-Datei aus?


Wie gesagt, das daran, dass z.B. das
Delphi-Quellcode:
{$R *.dfm}
in der PAS fehlt, kann es nicht liegen, denn dann
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EResNotFound mit der Meldung 'Ressource TForm1 nicht gefunden' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

jaenicke 19. Feb 2021 20:12

AW: Formularelemente nil
 
Kannst du davon einmal einen Screenshot zeigen? Sprich von der Quelltextstelle mit Stacktrace, wenn der Fehler passiert?

Teesäufer 19. Feb 2021 20:47

AW: Formularelemente nil
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von jaenicke (Beitrag 1483371)
Kannst du davon einmal einen Screenshot zeigen? Sprich von der Quelltextstelle mit Stacktrace, wenn der Fehler passiert?

Anhang 53674
Es war in dieser Quellcodezeile:

Code:
label2.caption:=inttostr(stufe);

Uwe Raabe 19. Feb 2021 22:24

AW: Formularelemente nil
 
Zitat:

Zitat von himitsu (Beitrag 1483370)
Wie gesagt, das daran, dass z.B. das
Delphi-Quellcode:
{$R *.dfm}
in der PAS fehlt, kann es nicht liegen, denn dann

Bin mir nicht sicher, ob das auch für Lazarus gilt...

Teesäufer 19. Feb 2021 22:31

AW: Formularelemente nil
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1483374)
Zitat:

Zitat von himitsu (Beitrag 1483370)
Wie gesagt, das daran, dass z.B. das
Delphi-Quellcode:
{$R *.dfm}
in der PAS fehlt, kann es nicht liegen, denn dann

Bin mir nicht sicher, ob das auch für Lazarus gilt...

Das wars. Super, danke! Darauf wäre ich nie gekommen, da ich davon ausging, dass es sich um einen Kommentar handelte ...

himitsu 19. Feb 2021 22:40

AW: Formularelemente nil
 
OMG, ich war ja eher davon ausgegangen, dass dieses uralte Verhalten der VCL so auch im Lazarus übernommen wurde. :shock:

Tja, ohne Fehlerprüfung passieren die komischsten Dinge. :roll:

Redeemer 20. Feb 2021 10:17

AW: Formularelemente nil
 
Zitat:

Zitat von Teesäufer (Beitrag 1483375)
Zitat:

Zitat von Uwe Raabe (Beitrag 1483374)
Zitat:

Zitat von himitsu (Beitrag 1483370)
Wie gesagt, das daran, dass z.B. das
Delphi-Quellcode:
{$R *.dfm}
in der PAS fehlt, kann es nicht liegen, denn dann

Bin mir nicht sicher, ob das auch für Lazarus gilt...

Das wars. Super, danke! Darauf wäre ich nie gekommen, da ich davon ausging, dass es sich um einen Kommentar handelte ...

„Kommentare“ mit Dollarzeichen am Anfang heißen Compiler-Direktiven und sind wichtig.

himitsu 20. Feb 2021 10:33

AW: Formularelemente nil
 
Auch wenn es selten vorkommt, denn Programmier sind faul und schreiben ungern zuviel, aber
Delphi-Quellcode:
(*$...*)
ist das gleiche wie
Delphi-Quellcode:
{$...}
.... nicht dass sich wer wundert.

https://www.freepascal.org/docs-html/prog/progch1.html
http://docwiki.embarcadero.com/RADSt...ktiven_-_Index



Und auch Kommentare mit // und /// sind bissl was Anderes. (für den Compiler ist // oder mehr zwar das "gleiche" .... aber gewisse Parser behandeln es anders)

Ich glaub für Lazarus gab es auch sowas, nur auf die Schnelle fand ich bloß das
https://wiki.freepascal.org/Lazarus_...ntation_Editor
Google zeigte für 'ne Sekunde im AutoComplete etwas an, wonach es aussah, als wenn jemand mal hier im Forum nach dieser Sache fragte. (hab's aber nicht wiedergefunden)

http://docwiki.embarcadero.com/RADSt...or_Delphi_Code
http://docwiki.embarcadero.com/RADSt...ation_Comments



Und grade bei FPC/Lazarus mußt du teilweise aufpassen, denn der Compiler kann in verschiedenen Modi arbeiten, wo er dann unterschiedlich reagiert.
https://www.freepascal.org/docs-html...3-1140001.3.21
https://www.freepascal.org/docs-html/prog/progse74.html



Da scheinbar Anfänger und so und außerdem "niemand hat vor Werbung zu machen" :roll:
https://www.embarcadero.com/de/products/delphi/starter

Teesäufer 20. Feb 2021 23:27

AW: Formularelemente nil
 
Zitat:

Zitat von Redeemer (Beitrag 1483382)
„Kommentare“ mit Dollarzeichen am Anfang heißen Compiler-Direktiven und sind wichtig.

Das habe ich inzwischen auch gemerkt :)

JamesTKirk 17. Mär 2021 09:18

AW: Formularelemente nil
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1483374)
Zitat:

Zitat von himitsu (Beitrag 1483370)
Wie gesagt, das daran, dass z.B. das
Delphi-Quellcode:
{$R *.dfm}
in der PAS fehlt, kann es nicht liegen, denn dann

Bin mir nicht sicher, ob das auch für Lazarus gilt...

Sollte es eigentlich, zumindest wenn man das Projekt frisch erstellt hat:

Code:
[Debuggerausnahmen-Nachricht]

Projekt project1 hat Exception-Klasse »EResNotFound« ausgelöst mit der Meldung:
Form resource TForm1 not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResource.

 In Datei '.\include\customform.inc' in Zeile 2072


[Diesen Ausnahmetyp übergehen]

[Break] [Continue]
Wenn allerdings in der Hauptprojektdatei eine bestimmte Zuweisung fehlt, dann ist diese Prüfung abgeschalten:

Delphi-Quellcode:
begin
  RequireDerivedFormResource := True; // <--- diese hier
  Application.Scaled := True;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Der Hintergrund hierzu ist historisch und liegt daran, das FPC früher keine {$R ...}-Resourcen unterstützt hat und Lazarus stattdessen Include-Dateien genutzt hat. Um die weitere Kompatibilität zu solchen Projekten zu gewährleisten wurde diese Variable eingeführt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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