Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Liste als HTML speichern (https://www.delphipraxis.net/74901-liste-als-html-speichern.html)

robinWie 10. Aug 2006 15:26


Liste als HTML speichern
 
Hallo

wie kann ich eine Liste aus einem TMemo oder einer TStringList als HTML speichern?. Ich habe es mit Memo.Lines.SaveToFile() versucht und als Dateierweiterung einfach .html angegeben. Es wurde auch gescpeicher nur keine Liste.
Das ganze saht dann so aus
Zitat:

[...] 0 | Größe: 3576 KB 0029. A-HA - Analogue (All I Want) | Jahr: 2006 | Größe: 5396 KB 0030. A-Ha - Crying In The Rain | Jahr: 1990 | Größe: 4136 KB 0031. A-ha - Stay on these roads | Jahr: 1988 | Größe: 4480 KB 0032. A-Ha - Take On Me | Jahr: | Größe: 3538 KB 0033. A-Ha - The Living Daylight | Jahr: 1987 | Größe: 3978 KB 0034. A-Ha - The Sun Always Shines On Tv | Jahr: | Größe: 4826 KB 0035. Aha - Hunting High And Low | Jahr: | Größe: 3518 KB 0036. A-Teens - Upside Down | Jahr: 2001 | Größe: 4560 KB 0037. A. Franklin & George Michael - Knew You Were Waiting | Jahr: 1987 | Größe: 3732 KB 0038. Aaliyah Feat. Timbaland - Try Again | Jahr: 2000 | Größe: 4378 KB 0039. Aaron Carter - Crush on You | Jahr: 1997 | Größe: 5240 KB 0040. Aaron Carter - Crush on You | Jahr: 1997 | Größe: 3238 KB 0041. ABBA - Chiquitita | Jahr: [...]
aber ich will das alles fein säuberlich untereinander steht, aber wie mache ich das. Schon mal vorweg: von html code habe ich kein plan, also eine erklärung für dummies :-D

Danke im Voraus

Robin

BenjaminH 10. Aug 2006 15:48

Re: Liste als HTML speichern
 
Eine Liste in HTML sieht so aus:
Code:
<ul>[*]Element1[*]Element2[*]Element3[/list]
Jetzt musst du das halt an dein Programm anpassen:
Delphi-Quellcode:
for i:=0 to Memo1.Lines.Count-1 do
  Memo1.Lines[i]:='[*]'+Memo1.Lines[i]+'';
Memo1.Text:='<html><body><ul>'+Memo1.Text+'[/list]</body></html>';
Und dann kannst du's speichern

Jelly 10. Aug 2006 16:16

Re: Liste als HTML speichern
 
Wie die Liste aussieht, hat Benjamin geschrieben. Ich würd hingehen, und mir eine neue Klasse definieren, welche dann direkt beim Speichern und Laden die Arbeit verrichtet...

Ich hab hier mal die Klasse mir der neuen SaveToFile Methode implementiert... Eine LoadFromFile geht dann analog, nur dass hier die html Tags wieder entfernt werden müssen, und die durch Zeilenumbrüche ersetzt werden müssen.

edit: Hier nun doch auch mit der LoadFromFile Implementierung... Eine genauere Prüfung beim Laden könnte aber eventuell noch sinnvoll sein.

Delphi-Quellcode:
unit HTMLStringList ;

interface

uses
  Classes;

type
  THTMLStringList = class (TStringList)
     procedure SaveToFile (const Filename : string) ; override ;
     procedure LoadFromFile (const Filename : string) ; override ;
  end ;


implementation

uses
  SysUtils;

{ THTMLStringList }

procedure THTMLStringList.LoadFromFile(const Filename: string);
begin
    inherited;

    // Zeilenumbrüche erst entfernen, da die für HTML nicht relevant sind
    Text := StringReplace (Text,#10,'',[rfReplaceAll,rfIgnoreCase]) ;
    Text := StringReplace (Text,#13,'',[rfReplaceAll,rfIgnoreCase]) ;

    //  Tags durch Zeilenumbrüche ersetzen
    Text := StringReplace (Text,'',#13,[rfReplaceAll,rfIgnoreCase]) ;

    // und restlichen html Tags entfernen, die mit der Liste zu haben
    Text := StringReplace (Text,'[*]','',[rfReplaceAll,rfIgnoreCase]) ;
    Text := StringReplace (Text,'<ul>','',[rfReplaceAll,rfIgnoreCase]) ;
    Text := StringReplace (Text,'[/list]','',[rfReplaceAll,rfIgnoreCase]) ;

end;

procedure THTMLStringList.SaveToFile(const Filename: string);
var
  FS : TFileStream ;
  i, L: Integer;
  S : string ;
begin
     if count > 0 then begin
        FS := TFileStream.Create (Filename,fmCreate) ;
        FS.Write ('<ul>',4) ;
        for i := 0 to Count - 1 do begin
            S := strings[i] ;
            S := '[*]' + S + '' ;
            L := length (S) ;
            FS.Write(S[1],L) ;
        end;
        FS.Write ('[/list]',5) ;
        FS.free ;
     end else
        inherited SaveToFile (Filename) ;

end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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