AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

HTML und Delphi

Ein Thema von markon · begonnen am 4. Nov 2003 · letzter Beitrag vom 5. Nov 2003
Antwort Antwort
Seite 2 von 3     12 3      
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#11

Re: HTML und Delphi

  Alt 5. Nov 2003, 09:27
@ 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 ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.081 Beiträge
 
Delphi 12 Athens
 
#12

Re: HTML und Delphi

  Alt 5. Nov 2003, 10:24
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.
BGCOLOR="#CCCCCC" => BGCOLOR=#CCCCCC Jedes mal 2 Byte.



Die 64k kannte ich noch nicht. Bin vor Win 2000 noch nicht an diese Grenze gestoßen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#13

Re: HTML und Delphi

  Alt 5. Nov 2003, 11:56
@ 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?
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#14

Re: HTML und Delphi

  Alt 5. Nov 2003, 12:13
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...

  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
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#15

Re: HTML und Delphi

  Alt 5. Nov 2003, 12:17
Zitat von himitsu:
Es gäbe auch noch die Möglichkeit bei der Farbe zu sparen.
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...
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#16

Re: HTML und Delphi

  Alt 5. Nov 2003, 12:54
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...
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.081 Beiträge
 
Delphi 12 Athens
 
#17

Re: HTML und Delphi

  Alt 5. Nov 2003, 13:13
@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.

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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#18

Re: HTML und Delphi

  Alt 5. Nov 2003, 13:27
Oh oh... das der HTML-Standard nur ein "Vorschlag" ist, das habe ich ja noch nie gehört...

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!
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#19

Re: HTML und Delphi

  Alt 5. Nov 2003, 14:21
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:StringReplace(sTemplate, '%TITLE%', sTitle, [rfReplaceAll, rfIgnoreCase]); wie muss die zeile für mein oben aufgeführtes beispiel aussehen? wo muss die zeile stehen?
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#20

Re: HTML und Delphi

  Alt 5. Nov 2003, 15:17
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
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 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