Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi HTML und Delphi (https://www.delphipraxis.net/11306-html-und-delphi.html)

markon 5. Nov 2003 08:27

Re: HTML und Delphi
 
@ alexander

hab da grad mal ini der hilfe nachgeschaut. hab folgendes zum memo gefunden:
Zitat:

Note: Under Win 9x, there is a limit of 64k of text for this control.
hab mich entschieden die werte direkt in eine datei zu schreiben, ohne memo.
Delphi-Quellcode:
 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);
frage: sieht jemand von euch auf den ersten blick ob man am code etwas verbessern kann ?

himitsu 5. Nov 2003 09:24

Re: HTML und Delphi
 
Den Absatz könnteste noch weglassen, da du ja eh nur einen hast.
Delphi-Quellcode:
writeln(htmlfile, '

');
writeln(htmlfile, '</p>');
Sind aber auch nur 11 Byte gespart.

Es gäbe auch noch die Möglichkeit bei der Farbe zu sparen.
Delphi-Quellcode:
BGCOLOR="#CCCCCC" => BGCOLOR=#CCCCCC
Jedes mal 2 Byte.



:oops: Die 64k kannte ich noch nicht. Bin vor Win 2000 noch nicht an diese Grenze gestoßen.

markon 5. Nov 2003 10:56

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?

Wormid 5. Nov 2003 11:13

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:
<html>
<head>
  <title>%TITLE%</title>
</head>

<body bgcolor="%BGCOLOR%">

<div align="center">
<h1 class="dp_rulez">%HEADLINE%</h1>

...
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.

Wenn man das Template dann in eine StringVariable reingeladen hat, dann ist der Rest (bei dieser einfachen Version) nur noch Search & Replace...

Delphi-Quellcode:
  StringReplace(sTemplate, '%TITLE%', sTitle, [rfReplaceAll, rfIgnoreCase]);
Auch so Dinge wie Loops (Tabellenzeilen z.B.) sind möglich, aber da muss man dann noch ein wenig mehr an Gehirnschmalz rein investieren.

Gruß

Wormid

Wormid 5. Nov 2003 11:17

Re: HTML und Delphi
 
Zitat:

Zitat von himitsu
Es gäbe auch noch die Möglichkeit bei der Farbe zu sparen.
Delphi-Quellcode:
BGCOLOR="#CCCCCC" => BGCOLOR=#CCCCCC
Jedes mal 2 Byte.

Aber wenn er sich an html-Standards halten möchte, dann kann man eben die "" nicht weglassen... :warn:

alcaeus 5. Nov 2003 11:54

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...

himitsu 5. Nov 2003 12:13

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:

http://www.FrankNStein.de/peitsch.gifJetzt nur nicht schlagen. Ich bin schon dafür, das man diesen Standard einhällt, jeden falls solange es wirklich sinnvoll und notwendig ist.

Wormid 5. Nov 2003 12:27

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:

markon 5. Nov 2003 13:21

Re: HTML und Delphi
 
eine gewisse dynamität erreiche ich auch einfach mit einem string:
Delphi-Quellcode:
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 ...
das mit dem StringReplace kapier ich nich so richtig:
Delphi-Quellcode:
StringReplace(sTemplate, '%TITLE%', sTitle, [rfReplaceAll, rfIgnoreCase]);
wie muss die zeile für mein oben aufgeführtes beispiel aussehen? wo muss die zeile stehen? :gruebel:

Wormid 5. Nov 2003 14:17

Re: HTML und Delphi
 
In deinem Beispiel kannst du das so nicht verwenden...

Delphi-Quellcode:
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;
Dieser Code ist jetzt ungestestet und nur mal eben so hingehackt... aber ich hoffe, er verdeutlicht wie ich es funzen soll.

Gruß

Wormid


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 Uhr.
Seite 2 von 3     12 3      

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