![]() |
Overview über Ordnerinhalt in HTML-Datei schreiben
Auf einer anderen Seite habe ich bereits den Tipp mit Verweis auf 'http://www.dsdt.info/tipps/?id=134' bekommen.
Mit dieser rekursiven Suche möchte ich zunächst alle HTM-Dateien im Ordner bestimmen. Für jede dieser Dateien soll dann ein Code geschrieben werden. Ich habe bisher so weit umgeschrieben:
Delphi-Quellcode:
Abruf über Button:
procedure ScanDir(const Directory: String);
var SR: TSearchRec; begin if FindFirst(Directory + Mask, faAnyFile and not faDirectory, SR) = 0 then try repeat if NOT (SR.Name = 'overview.htm') then List.Add(SR.Name); until FindNext(SR) <> 0; finally FindClose(SR); end; if WithSubDirs then begin if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try repeat if ((SR.attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then ScanDir(Directory + SR.Name + '\'); until FindNext(SR) <> 0; finally FindClose(SR); end; end; end; begin List.BeginUpdate; try if ClearList then List.Clear; if Directory = '' then Exit; if Directory[Length(Directory)] <> '\' then Directory := Directory + '\'; ScanDir(Directory); finally List.EndUpdate; end; end;
Delphi-Quellcode:
Nun soll zu den Einträgen in der Listbox jeweils ein HTML-Code in der Form
procedure TForm1.BtWriteOverviewClick(Sender: TObject);
var path,s,anfang,ende,hcode: String; Datei: TextFile; count: Integer; begin path:=ExtractFilePath(ParamStr(0))+'.\splaene'; GetFilesInDirectory(path, '*.htm*', LbOverview.Items, False, True); LbOverview.Visible:=True; FOR count := 0 TO LbOverview.Items.Count-1 DO hcode:='<td align="center">'+sLineBreak+'<p align="center">[url="'+LbOverview.Items[count]+'"]'+LbOverview.Items[count]+'[/url]</td>'; AssignFile(Datei, (ExtractFilePath(ParamStr(0))+'.\splaene\overview.htm')); Rewrite(Datei); // Datei neu schreiben anfang:='<table border="1" width="23%" style="border-collapse: collapse" bordercolorlight="#000000" bordercolordark="#000000">'+SLineBreak+'<tr>'; ende:='</tr>'+SLineBreak+'</table>'; s:=anfang+String(hcode)+ende; Write(Datei,s); // Datei schreiben CloseFile(Datei); // Datei schließen end;
Code:
geschrieben werden.
<td align="center"><p align="center">[url="klasse.htm"]Klasse[/url]</td>
In meinem Code wird leider immer nur einer ausgegeben, nämlich das letzte Element der Liste. |
Re: Overview über Ordnerinhalt in HTML-Datei schreiben
Weil Deine Schleife nur der internen Variable etwas zuweist und nichts schreibt.
Delphi-Quellcode:
Nicht wirklich schön, aber halt auch nur auf die Schnelle umgestellt.
AssignFile(Datei, (ExtractFilePath(ParamStr(0))+'.\splaene\overview.htm'));
Rewrite(Datei); // Datei neu schreiben anfang:='<table border="1" width="23%" style="border-collapse: collapse" bordercolorlight="#000000" bordercolordark="#000000">'+SLineBreak+'<tr>'; ende:='</tr>'+SLineBreak+'</table>'; WriteLn(Datei, anfang); WriteLn(Datei, ende); for count := 0 to Pred(LbOverview.Items.Count) do begin hcode:='<td align="center">'+sLineBreak+'<p align="center">[url="'+LbOverview.Items[count]+'"]'+LbOverview.Items[count]+'[/url]</td>'; WriteLn(Datei, hcode); end; CloseFile(Datei); // Datei schließen |
Re: Overview über Ordnerinhalt in HTML-Datei schreiben
Ach..:wall:
Ist klar, dasses dann nicht klappt. ^^ Musste es jetzt noch n bisschen umstellen:
Delphi-Quellcode:
Ist es möglich, dass anfangs schon die Einträge der Listbox wirklich nach Alphabet/Zahlen geordnet werden und nicht 11 vor 8 oder so steht?
AssignFile(Datei, (ExtractFilePath(ParamStr(0))+'.\splaene\overview.htm'));
Rewrite(Datei); // Datei neu schreiben anfang:='<html>'+sLineBreak+'<head>'+sLineBreak+'<title>Stundenplanübersicht '+schule+'</title>'+sLineBreak+'</head>'+sLineBreak+'<body>'+sLineBreak+'<table width="100%">'+SLineBreak+'<tr>'; b:=sLineBreak+'<td align="left"><FONT face=Arial COLOR=#000080 style="font-size: 8pt">Stand: '+str+'</FONT><font color=#000080 face=Arial size=5></font></td>'+sLineBreak+'<td align="right"><FONT face=Arial COLOR=#000080 style="font-size: 8pt">'+schule+'</td></tr></table>'+sLineBreak+'<table align="center" border="1" width="23%" style="border-collapse: collapse" bordercolorlight="#000000" bordercolordark="#000000">'+sLineBreak+'<tr>'; WriteLn(Datei, anfang); WriteLn(Datei, b); for count := 0 to Pred(LbOverview.Items.Count) do begin hcode:='<td align="center">'+sLineBreak+'[url="'+LbOverview.Items[count]+'"]'+LbOverview.Items[count]+'[/url]</td>'; WriteLn(Datei, hcode); end; ende:='</tr>'+sLineBreak+'</table>'+sLineBreak+'<p align="right"><font face=Arial size=1 color=#0000A0> Geschrieben mit '+programm+' von [email="svenkan@gmx.de"]Sven Kannenberg[/email]</font></p>'+sLineBreak+'</body>'+sLineBreak+'</html>'; WriteLn(Datei, ende); CloseFile(Datei); // Datei schließen Bei PHP muss man das irgendwie innem Array zusammenfassen und dann sortieren lassen. Wie funktioniert das in Delphi? |
Re: Overview über Ordnerinhalt in HTML-Datei schreiben
Für normales alphabetisches Sortieren dürfte LbOverview.Items.Sort ausreichen... ein etwas intelligenteres Sortieren, daß das mit den Zahlen idealer macht (Du meinst wahrscheinlich ähnlich wie der Windows Explorer?) fällt mir nur noch CustomSort ein, dem kannst Du eine eigene Vergleichsroutine übergeben, in der Du sortieren kannst wie Du lustig bist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 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