Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ein Programm ohne Units schreiben (https://www.delphipraxis.net/57645-ein-programm-ohne-units-schreiben.html)

Ralf Kaiser 24. Nov 2005 19:30

Re: Ein Programm ohne Units schreiben
 
Zitat:

Zitat von Christian18
hallo ichbins,

wenn ich deine variante compilieren will, dann kommt bei mir eine fehler meldung. das hatte ich nämlich auch schon mal getestet. und bei mir kam genau die gleiche fehler meldung. so und hier jetzt die fehler meldung:

Exception EResNotFound in Modul Projekt1.exe bei 00043A94.
Ressource TFenster wurde nicht gefunden.

Halli Hallo,

diese Variante benutzte "Application.CreateForm()". Dabei wird dann versucht die entsprechende Fenster-Resource aus der DFM-Datei zu laden. Diese DFM-Datei war aber nicht vorhanden.

Erzeuge das Fenster mit:

Fenster := TFenster.Create(Application);

und dann sollte es gehen.

Ralf Kaiser 24. Nov 2005 19:33

Re: Ein Programm ohne Units schreiben
 
Zitat:

Zitat von Christian18
Zitat:

Zitat von NicoDE
Zitat:

Zitat von Christian18
wie kann ich ein Programm ohne Units schreiben.

Definiere 'ohne Units'.
Soll das heißen 'ohne eigene Units', oder 'gänzlich ohne Units' (letzteres geht nicht, da der Delphi-Compiler ohne System.pas und SysInit.pas nicht arbeiten kann).

ja ich meine ohne eigene units.

Und was soll das bringen? Soll das "one Units" nur zu Übungszwecken gemacht werden oder hat es einen speziellen Sinn??

Ciao,
Ralf

Ralf Kaiser 24. Nov 2005 19:40

Re: Ein Programm ohne Units schreiben
 
Zitat:

Zitat von igel457
das geht doch und zwar so:
Delphi-Quellcode:

procedure Button1Click(sender:TObject);
begin
  application.terminate;
end;

begin
  application.initalize;
  application.titel := 'Mein erstes Programm mit Fenster!';
  application.createform(TFenster,fenster);
  application.run;
  fenster.caption := 'Hallo';
  with tbutton.create(fenster) do
  begin
    parent := fenster;
    width := 100;
    caption := 'Klickmich!';
    onclick := Button1Click;
  end;
end.

Hallo,

das wird so nicht gehen. (ich meine jetzt nicht das mit dem CreateForm, das geht auch nicht aber das wurde hier ja schon behandelt)

Was auch nicht geht ist die Zuweisung des Eventhandlers "Button1Click". Dieser ist als ganz normale Prozedur deklariert. Als Eventhandler können aber nur Methoden benutzt werden!

Es muss also heissen:

Delphi-Quellcode:
procedure TFenster.Button1Click(sender:TObject);
begin
  application.terminate;
end;
und später dann:

Delphi-Quellcode:
onclick := TFenster.Button1Click;
Ohne "Button1Click" zu einer Methode zu machen, bekommst du diesen Source ja nicht einmal kompilliert.

Ciao,
Ralf

igel457 24. Nov 2005 19:43

Re: Ein Programm ohne Units schreiben
 
Stimmt, hatte ich vergessen...
Ich frage mich aber, weshalb das auch ohne das "application.createform" nicht funktionert...

malo 24. Nov 2005 19:52

Re: Ein Programm ohne Units schreiben
 
Versuch doch auch mal Luckies Win32-API Tutorial ;)

Hat mir ein wenig geholfen. Auch wenn ich im Endeffekt Fenster mit der Win32-API erstmal links liegen lassen will, und mich nur auf die Messages beschränken will, wenn ich das mal brauchen sollte... Mich damit noch rumzuärgern lohnt imho kaum. Da warte ich lieber, bis .NET Standard ist. Da spart man sich das Umgewöhnen ;)

NicoDE 25. Nov 2005 11:22

Re: Ein Programm ohne Units schreiben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei ein "Hello World"-Projekt "ohne Units"...

- Delphi gestartet
- Neu / Anwendung ...
- Button auf Form erzeugt
- Button1Click implementiert
- Alles gespeichert
- Delphi geschlossen
- Unit1.dfm -> Projekt1.dfm
- Projekt1.dpr uses aus Unit1.pas
- Code aus Unit1.pas in Projekt1.dpr
- Delphi gestartet
- Projekt erzeugt


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr.
Seite 3 von 3     123   

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