HTML Dateien erzeugen
-
- Beiträge: 179
- Registriert: Mo 13. Jan 2025, 12:11
HTML Dateien erzeugen
Hallo Leute,
als Anfänger teste ich so einiges. Auch dieses jetzt. Ich wollte 2 HTML Seiten erstellen im Verzeichnis des Projektes. Es läuft alles durch und es wird auch grün und erstellt eine Exe.- aber es funktioniert nicht. Vestehe nicht warum. Hier der Code.
uses
SysUtils, Classes, Forms, Controls, Graphics, Dialogs;
var
Form1: TForm1;
function GetExePath: string;
begin
Result := ExtractFilePath(ParamStr(0));
end;
procedure GenerateHtml(const PageName: string; const Content: string);
var
HtmlFile: TextFile;
begin
try
AssignFile(HtmlFile, IncludeTrailingPathDelimiter(GetExePath) + PageName + '.html');
Rewrite(HtmlFile);
WriteLn(HtmlFile, '<html><body>');
WriteLn(HtmlFile, Content);
WriteLn(HtmlFile, '</body></html>');
CloseFile(HtmlFile);
ShowMessage('HTML-Datei "' + PageName + '.html" wurde erfolgreich erstellt.');
except
on EInOutError do
ShowMessage('Fehler beim Erstellen der HTML-Datei: ' + PageName + '.html');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
GenerateHtml('index', 'Willkommen auf meiner Webseite!');
GenerateHtml('about', 'Hier erfahrt ihr mehr über mich.');
end;
Komisch oder? Danke im voraus. Grüße
als Anfänger teste ich so einiges. Auch dieses jetzt. Ich wollte 2 HTML Seiten erstellen im Verzeichnis des Projektes. Es läuft alles durch und es wird auch grün und erstellt eine Exe.- aber es funktioniert nicht. Vestehe nicht warum. Hier der Code.
uses
SysUtils, Classes, Forms, Controls, Graphics, Dialogs;
var
Form1: TForm1;
function GetExePath: string;
begin
Result := ExtractFilePath(ParamStr(0));
end;
procedure GenerateHtml(const PageName: string; const Content: string);
var
HtmlFile: TextFile;
begin
try
AssignFile(HtmlFile, IncludeTrailingPathDelimiter(GetExePath) + PageName + '.html');
Rewrite(HtmlFile);
WriteLn(HtmlFile, '<html><body>');
WriteLn(HtmlFile, Content);
WriteLn(HtmlFile, '</body></html>');
CloseFile(HtmlFile);
ShowMessage('HTML-Datei "' + PageName + '.html" wurde erfolgreich erstellt.');
except
on EInOutError do
ShowMessage('Fehler beim Erstellen der HTML-Datei: ' + PageName + '.html');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
GenerateHtml('index', 'Willkommen auf meiner Webseite!');
GenerateHtml('about', 'Hier erfahrt ihr mehr über mich.');
end;
Komisch oder? Danke im voraus. Grüße
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 359
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: HTML Dateien erzeugen
Hi!
Sieht auf'n ersten Blick nicht falsch aus. Was kommt denn für'ne Meldung?
Man könnte mit try ... finally arbeiten, um die Datei in jedem Fall zu schließen, aber das sollte zunächst keine Rolle spielen.
PS: Ich sehe gerade, dass du es in FormCreate aufrufst. Mach es mal lieber in einem Button-Klick.
Sieht auf'n ersten Blick nicht falsch aus. Was kommt denn für'ne Meldung?
Man könnte mit try ... finally arbeiten, um die Datei in jedem Fall zu schließen, aber das sollte zunächst keine Rolle spielen.
PS: Ich sehe gerade, dass du es in FormCreate aufrufst. Mach es mal lieber in einem Button-Klick.
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- 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: HTML Dateien erzeugen
Als Anregung - ich würde hier anfangen auf Streams zu setzen. https://www.freepascal.org/docs-html/rt ... tream.html und https://wiki.freepascal.org/TFileStream/de und auch hier, wie man das über eine Stringlist einfach machen kann viewtopic.php?t=5379
Ausserdem wird der Code hier im Forum lesbarer, wenn man Codetags verwendet. Siehe </> über dem Editorfenster.
Ausserdem wird der Code hier im Forum lesbarer, wenn man Codetags verwendet. Siehe </> über dem Editorfenster.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 179
- Registriert: Mo 13. Jan 2025, 12:11
Re: HTML Dateien erzeugen
Ich komme leider nicht klar. Es ist ja nur ein Test, aber ich möchte mal ein Erfolgserlebnis in Lazarus ....keine Ahnung was hier nicht geht. Es kommt keine Fehlermeldung nix.Jorg3000 hat geschrieben: Mo 27. Jan 2025, 10:47 Hi!
Sieht auf'n ersten Blick nicht falsch aus. Was kommt denn für'ne Meldung?
Man könnte mit try ... finally arbeiten, um die Datei in jedem Fall zu schließen, aber das sollte zunächst keine Rolle spielen.
PS: Ich sehe gerade, dass du es in FormCreate aufrufst. Mach es mal lieber in einem Button-Klick.
Was mache ich nur falsch? Im Anhang das Programm.
- Dateianhänge
-
Webtest.zip
- (342.07 KiB) 34-mal heruntergeladen
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 359
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: HTML Dateien erzeugen
Hallo nochmal!
Du bist ein Opfer deines eigenen Copy & Paste geworden.
In deiner Unit gibt es zwei implementation-Teile und zwei mal die Definition von TForm1 = class(TForm) und ihren Methoden.
Und es wird blöderweise wohl der Teil ausgeführt, in dem die Prozeduren ohne Inhalt sind, deshalb passiert nichts, nicht mal eine Fehlermeldung.
Es ist spannend, dass der Compiler nicht meckert!
Der Compiler hört wohl nach dem ersten "end." auf und ignoriert den übrigen Code - ausgerechnet aber jener ignorierte, zweite Teil ist der mit dem eigentlichen Inhalt.
Grüße, Jörg
Du bist ein Opfer deines eigenen Copy & Paste geworden.
In deiner Unit gibt es zwei implementation-Teile und zwei mal die Definition von TForm1 = class(TForm) und ihren Methoden.
Und es wird blöderweise wohl der Teil ausgeführt, in dem die Prozeduren ohne Inhalt sind, deshalb passiert nichts, nicht mal eine Fehlermeldung.
Es ist spannend, dass der Compiler nicht meckert!

Der Compiler hört wohl nach dem ersten "end." auf und ignoriert den übrigen Code - ausgerechnet aber jener ignorierte, zweite Teil ist der mit dem eigentlichen Inhalt.

Grüße, Jörg
-
- Beiträge: 179
- Registriert: Mo 13. Jan 2025, 12:11
Re: HTML Dateien erzeugen
Kannst du mir das geändert mal zusenden damit ich verstehe was du meinst...Ist nicht einfach eine neue Sprache zu lernen.
Re: HTML Dateien erzeugen
In der Form ist auch der Eventhandler nicht eingehägt.
Fang einfach noch mal mit einem neuen Projekt an.
Dann legst du einen Button auf das Formular und doppelklickst den.
Dann hast du ein neues Gerüst wo du deinen Code reinkopieren kannst.
Zur Erklärung von Jorg3000s Anmerkung: In deinem Code gibt es zweimal "TForm1 = class(TForm)" und andere Merkwürdigkeiten. Das ist nicht gut.
Fang einfach noch mal mit einem neuen Projekt an.
Dann legst du einen Button auf das Formular und doppelklickst den.
Dann hast du ein neues Gerüst wo du deinen Code reinkopieren kannst.
Zur Erklärung von Jorg3000s Anmerkung: In deinem Code gibt es zweimal "TForm1 = class(TForm)" und andere Merkwürdigkeiten. Das ist nicht gut.
-
- Beiträge: 179
- Registriert: Mo 13. Jan 2025, 12:11
Re: HTML Dateien erzeugen
Wie machst du das denn? Also wenn du einen Code woanders kopierst? Also wenn ich z.B. ein Button erstelle, dann macht im Codebreich sofort ein Event vom Programm selbst. Wie kann ich das denn unterbinden und wie kann ich das Manuell erstellen lassen? Auch wenn ich ein Projekt neu mache, dann stehen schon sachen drin. Was bedeuten denn diese Sachen? Grüßetheo hat geschrieben: Mo 27. Jan 2025, 14:02 In der Form ist auch der Eventhandler nicht eingehägt.
Fang einfach noch mal mit einem neuen Projekt an.
Dann legst du einen Button auf das Formular und doppelklickst den.
Dann hast du ein neues Gerüst wo du deinen Code reinkopieren kannst.
Zur Erklärung von Jorg3000s Anmerkung: In deinem Code gibt es zweimal "TForm1 = class(TForm)" und andere Merkwürdigkeiten. Das ist nicht gut.
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- 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: HTML Dateien erzeugen
Lazarus ist ein RAD-Tool. Daher muss man sich an die Spielregeln halten.Andy Nightingale hat geschrieben: Mo 27. Jan 2025, 15:49 Wie machst du das denn? Also wenn du einen Code woanders kopierst? Also wenn ich z.B. ein Button erstelle, dann macht im Codebreich sofort ein Event vom Programm selbst. Wie kann ich das denn unterbinden und wie kann ich das Manuell erstellen lassen? Auch wenn ich ein Projekt neu mache, dann stehen schon sachen drin. Was bedeuten denn diese Sachen? Grüße
Das pas-File und das lfm-File bei GUI-Sachen gehören dazu. Und im Hintergrund werden die grafischen Elemente wie Button über das lfm File mit dem pas synchron gehalten. Kopierst du "irgendwas" aus anderen Quelltext heraus und in eine Routine hinein, so ist noch lange kein funktionierender Eventhandler damit gemacht - weil hat das nicht richtig mit dem lfm zusammengestimmt ist.
Wenn du einen Eventhandler sauber machen willst, so mache zuerst mit einem Doppelclick auf das Element oder im Objectinspektor (OI) die Grundroutine, die wird automatisch dann richtig im lfm UND pas File erzeugt. Dort kannst dann deinen Code hineinposten.
Sei gewarnt, pfusche nicht im lfm manuell herum, solange du nicht absolut weisst was du da tust !!! Es kann sein, das dann das lfm und das pas defekt sind, wenn du nicht tiefer von den internas von Lazarus bescheid weist.
Wenn du ein neues Form anlegst (zB. über Datei neu), so wird dir ein funktionierender Rumpf angelegt, das heisst pas und lfm. Nur pas zum Beispiel wenn eine Unit ist, die ohne grafische Komponenten auskommt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: HTML Dateien erzeugen
Das kannst du z..B. hier nachlesen:
http://svg-demo.rf.gd/lazarus/unit1.html?i=1
Es gibt bestimmt noch andere Quellen.
-
- Beiträge: 179
- Registriert: Mo 13. Jan 2025, 12:11
Re: HTML Dateien erzeugen
Danke sehr für die Erklärungaf0815 hat geschrieben: Mo 27. Jan 2025, 16:46Lazarus ist ein RAD-Tool. Daher muss man sich an die Spielregeln halten.Andy Nightingale hat geschrieben: Mo 27. Jan 2025, 15:49 Wie machst du das denn? Also wenn du einen Code woanders kopierst? Also wenn ich z.B. ein Button erstelle, dann macht im Codebreich sofort ein Event vom Programm selbst. Wie kann ich das denn unterbinden und wie kann ich das Manuell erstellen lassen? Auch wenn ich ein Projekt neu mache, dann stehen schon sachen drin. Was bedeuten denn diese Sachen? Grüße
Das pas-File und das lfm-File bei GUI-Sachen gehören dazu. Und im Hintergrund werden die grafischen Elemente wie Button über das lfm File mit dem pas synchron gehalten. Kopierst du "irgendwas" aus anderen Quelltext heraus und in eine Routine hinein, so ist noch lange kein funktionierender Eventhandler damit gemacht - weil hat das nicht richtig mit dem lfm zusammengestimmt ist.
Wenn du einen Eventhandler sauber machen willst, so mache zuerst mit einem Doppelclick auf das Element oder im Objectinspektor (OI) die Grundroutine, die wird automatisch dann richtig im lfm UND pas File erzeugt. Dort kannst dann deinen Code hineinposten.
Sei gewarnt, pfusche nicht im lfm manuell herum, solange du nicht absolut weisst was du da tust !!! Es kann sein, das dann das lfm und das pas defekt sind, wenn du nicht tiefer von den internas von Lazarus bescheid weist.
Wenn du ein neues Form anlegst (zB. über Datei neu), so wird dir ein funktionierender Rumpf angelegt, das heisst pas und lfm. Nur pas zum Beispiel wenn eine Unit ist, die ohne grafische Komponenten auskommt.
-
- Beiträge: 179
- Registriert: Mo 13. Jan 2025, 12:11
Re: HTML Dateien erzeugen
Das hat mir sehr geholfen zu verstehen was da denn passiert. Als Anfänger braucht man eben irgendwie was optisches zum sehen und verstehen. Danketheo hat geschrieben: Mo 27. Jan 2025, 17:12Das kannst du z..B. hier nachlesen:
http://svg-demo.rf.gd/lazarus/unit1.html?i=1
Es gibt bestimmt noch andere Quellen.
Re: HTML Dateien erzeugen
Wenn du lieber Videos guckst als Anleitungen zu lesen, ist dieser Kanal vielleicht etwas für dich: https://www.youtube.com/watch?v=VnShzVDv85Y
Zuletzt geändert von wp_xyz am Mo 27. Jan 2025, 18:49, insgesamt 1-mal geändert.
-
- Beiträge: 179
- Registriert: Mo 13. Jan 2025, 12:11
Re: HTML Dateien erzeugen
Danke eine gute Idee 

-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: HTML Dateien erzeugen
Da stimme ich dir zu. Wen man manuell etwas ändern will, erzeugt man am besten die Komponente dynamisch.Sei gewarnt, pfusche nicht im lfm manuell herum, solange du nicht absolut weisst was du da tust !!! Es kann sein, das dann das lfm und das pas defekt sind, wenn du nicht tiefer von den internas von Lazarus bescheid weist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot