![]() |
Re: HTML und Delphi
@ alexander
hab da grad mal ini der hilfe nachgeschaut. hab folgendes zum memo gefunden: Zitat:
Delphi-Quellcode:
frage: sieht jemand von euch auf den ersten blick ob man am code etwas verbessern kann ?
assignfile(htmlfile, 'bsp.html');
rewrite(htmlfile); writeln(htmlfile, '<html>'); writeln(htmlfile, '<head>'); writeln(htmlfile, '<title>irgend ne headline</title>'); writeln(htmlfile, '</head>'); writeln(htmlfile, '<body>'); writeln(htmlfile, ' '); writeln(htmlfile, '<center>'); adoquery1.DisableControls; adoquery1.First; writeln(htmlfile, '<table border=1 CELLPADDING=1>'); bgfarbe := 'BGCOLOR="#BBBBBB"'; writeln(htmlfile, '<tr '+bgfarbe+'><td width=10></td><td width=120>Verein</td><td width=50 ALIGN=center>Spiele</td><td width=50 ALIGN=center>TorP</td><td width=50 ALIGN=center>TorM</td><td width=50 ALIGN=center>TorDiff</td><td width=50 ALIGN=center>Punkte</td></tr>'); while not adoquery1.Eof do begin {dynamische groesse, kommt auf die anzahl der datensaetze an} i:=i+1; if i mod 2 = 0 then bgfarbe := 'BGCOLOR="#CCCCCC"' {zeilenhintergrund unterschiedlich} else bgfarbe := 'BGCOLOR="#CCCCDD"'; write(htmlfile, '<tr '+bgfarbe+'><td ALIGN=center>'+inttostr(i)+ '</td>'); write(htmlfile, '<td>'+adoquery1.FieldByName('Name').AsString+ '</td>'); write(htmlfile, '<td ALIGN=center>'+inttostr(adoquery1.FieldByName('Spiele').asinteger)+ '</td>'); write(htmlfile, '<td ALIGN=center>'+inttostr(adoquery1.FieldByName('TorP').AsInteger)+ '</td>'); write(htmlfile, '<td ALIGN=center>'+inttostr(adoquery1.FieldByName('TorM').AsInteger)+ '</td>'); write(htmlfile, '<td ALIGN=center>'+inttostr(adoquery1.FieldByName('TorDiff').AsInteger)+ '</td>'); write(htmlfile, '<td ALIGN=center>'+inttostr(adoquery1.FieldByName('Punkte').AsInteger)+'</td>'); writeln(htmlfile, '</tr>'); adoquery1.Next; end;{end-while} writeln(htmlfile, '</table>'); adoquery1.EnableControls; writeln(htmlfile, '</center>'); writeln(htmlfile, '</p>'); writeln(htmlfile, '</body>'); writeln(htmlfile, '</head>'); closefile(htmlfile); |
Re: HTML und Delphi
Den Absatz könnteste noch weglassen, da du ja eh nur einen hast.
Delphi-Quellcode:
Sind aber auch nur 11 Byte gespart.
writeln(htmlfile, '
'); writeln(htmlfile, '</p>'); Es gäbe auch noch die Möglichkeit bei der Farbe zu sparen.
Delphi-Quellcode:
Jedes mal 2 Byte.
BGCOLOR="#CCCCCC" => BGCOLOR=#CCCCCC
:oops: Die 64k kannte ich noch nicht. Bin vor Win 2000 noch nicht an diese Grenze gestoßen. |
Re: HTML und Delphi
@ himitsu
danke für deinen vorschlag. @ all kann man am code selber etwas ändern, ich meine damit ob ich etwas zu umständlich programmiert habe? |
Re: HTML und Delphi
Moin,
ich persönlich würde an deiner Stelle eher den Weg über "Templates" gehen. Wenn du jetzt auch nur das kleinste bisschen am Layout oder dem Aufbau deiner Seite ändern willst, dann musst du jedesmal komplett den Source da oben umbasteln. Als Template-Beispiel:
Code:
Das wäre mal was ganz simples als Idee. Dieses Template kann dann entweder als Datei bei der Anwendung mitgeliefert werden, so dass der User das anpassen kann, oder man packt es z.B in die Resourcen der Anwendung mit rein.
<html>
<head> <title>%TITLE%</title> </head> <body bgcolor="%BGCOLOR%"> <div align="center"> <h1 class="dp_rulez">%HEADLINE%</h1> ... Wenn man das Template dann in eine StringVariable reingeladen hat, dann ist der Rest (bei dieser einfachen Version) nur noch Search & Replace...
Delphi-Quellcode:
Auch so Dinge wie Loops (Tabellenzeilen z.B.) sind möglich, aber da muss man dann noch ein wenig mehr an Gehirnschmalz rein investieren.
StringReplace(sTemplate, '%TITLE%', sTitle, [rfReplaceAll, rfIgnoreCase]);
Gruß Wormid |
Re: HTML und Delphi
Zitat:
|
Re: HTML und Delphi
Das mit den Templates ist meiner Meinung nach die beste Möglichkeit. Du lieferst mit dem Quellcode die Template-Dateien mit, und aus denen generierst du dir dann die HTML-Seite. Logisch musst du die Variablen im Template noch mit den richtigen Werten ersetzen, doch das dürfte eben wie schon gesagt mit StringReplace kein Problem sein. Falls du noch Hilfe zu den Templates benötigst, schick mir eine PN...
|
Re: HTML und Delphi
@Wormid
Der "HTML-Standard" ist mehr ein "Vorschlag" zum Aufbau einer HTML-Seite. HTML ist ja keine statische Sprache wie z.B. Delphi, wo alles in einer bestimmten Art aufgebaut sein muss. Er läßt einem eine gewisse Freiheit beim schreiben. Modemnutzer freut es ja, wenn die zu übertragende Datenmenge geringer wird, auch wenn es nur so ein biss'l ist, denn im Grossen und Ganzen läppert sich da einiges zusammen. Und da das (") eine Sache ist, bei der die Browser flexiebel sind, ist das doch verkraftbar. :zwinker: ![]() |
Re: HTML und Delphi
Oh oh... das der HTML-Standard nur ein "Vorschlag" ist, das habe ich ja noch nie gehört... :shock:
Eigentlich ist das schon ein Standard - ein Standard an den sich nur leider kaum jemand hält... Aber im Grunde führt das ein wenig vom Thema weg, also lassen wir das! :stupid: |
Re: HTML und Delphi
eine gewisse dynamität erreiche ich auch einfach mit einem string:
Delphi-Quellcode:
das mit dem StringReplace kapier ich nich so richtig:
var TITLE : string;
begin assignfile(htmlfile, 'bsp.html'); rewrite(htmlfile); writeln(htmlfile, '<html>'); writeln(htmlfile, '<head>'); TITLE := 'New Title'; // irgend ein text writeln(htmlfile, '<title>' + TITLE + '</title>'); writeln(htmlfile, '</head>'); writeln(htmlfile, '<body>'); writeln(htmlfile, ' '); writeln(htmlfile, '<center>'); ... usw ...
Delphi-Quellcode:
wie muss die zeile für mein oben aufgeführtes beispiel aussehen? wo muss die zeile stehen? :gruebel:
StringReplace(sTemplate, '%TITLE%', sTitle, [rfReplaceAll, rfIgnoreCase]);
|
Re: HTML und Delphi
In deinem Beispiel kannst du das so nicht verwenden...
Delphi-Quellcode:
Dieser Code ist jetzt ungestestet und nur mal eben so hingehackt... aber ich hoffe, er verdeutlicht wie ich es funzen soll.
var
S: String; F: Textfile; begin // Richtig Sinn macht das nur, wenn man "S" entweder aus einer Datei oder einer Resource lädt! // Hier jetzt der einfachheit halber einfach mal fest zugewiesen. S := '<html>' + #13#10 + '<head><title>%TITLE%</title></head>' + #13#10 + '<body bgcolor="%BGCOLOR%">...'; // usw und so fort... S := StringReplace(S, '%TITLE%', 'Dies ist der Seitentitel', [rfReplaceAll, rfIgnoreCase]); S := StringReplace(S, '%BGCOLOR%', '#beef00', [rfReplaceAll, rfIgnoreCase]); // ... so lange weitermachen, bis alle Variablen ersetzt sind AssignFile(F, 'foo.html'); Rewrite(F); Write(F, S); CloseFile(F); end; Gruß Wormid |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 Uhr. |
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