Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
Delphi XE2 Professional
|
Re: Tabellenähnliche Komponente für Logfiles gesucht
30. Mai 2006, 16:21
Hallo,
ich hab mal so was ähnliches programmiert.
Vielleicht hilft es dir ja:
Delphi-Quellcode:
procedure Text_Color(RichEdit: TRichEdit; Farbe_Text: String; Color_Anfang, Color_Ende: TColor);
begin
with RichEdit.SelAttributes do
Color := Color_Anfang;
RichEdit.Lines.Add(Farbe_Text);
with RichEdit.SelAttributes do
Color := Color_Ende;
end;
procedure Infos(RichEdit: TRichEdit; Code: Integer; StartDatei, ZielOrdner: String; Value: Integer);
//Fehlercode: 1 = Kopiervorgang erfolgreich 2 = Start OK, Ziel false
// 3 = Start false, Ziel OK 4 = Start false, Ziel false
// 5 = Datum/Uhrzeit gleich 6 = Quell-Eintrag fehlt
// 7 = Ziel-Eintrag fehlt 8 = Quell- und Ziel-Eintrag fehlen
// 9 = 10 =
// 11 = 12 =
// 13 = Kopierfunktion ist ausgeschalten 14 = Fehler Kopiervorgang
// 15 = keine Netzwerkverbindung 16 = keine Daten in der Ini-Datei vorhanden
const
//TabString = 8 Leerzeichen
TabString = #32#32#32#32#32#32#32#32;
var
SValue, SDate: String;
begin
//Wenn Value ungleich "0" ist, dann wird der Wert aus der Variable "Value"
//übernommen
If Value = 0 then
SValue := ''
else
SValue := 'file' + IntToStr(Value) + ':';
//Variable "StartDatei" für Datumsanzeige retten
SDate := StartDatei;
//Lange Dateinamen verkürzt darstellen
StartDatei := MinimizeName(StartDatei, Form1.Canvas, RichEdit.Width - WidthOffset);
ZielOrdner := MinimizeName(ZielOrdner, Form1.Canvas, RichEdit.Width - WidthOffset);
//----------- RichEdit-Texte aufbauen -----------
//erste Zeile aufbauen
RichEdit.Lines.Add(SValue);
//Code auswerten
case Code of
1: //Kopiervorgang erfolgreich
begin
Text_Color(RichEdit, TabString + 'Kopiervorgang erfolgreich!',
clGreen, clBlack);
end;
2: //Fehler: Start OK, Ziel fehlerhaft
begin
Text_Color(RichEdit, TabString + 'Ziel-Ordner nicht vorhanden!', clRed, clBlack);
end;
3: //Fehler: Start fehlerhaft, Ziel OK
begin
Text_Color(RichEdit, TabString + 'Quell-Datei nicht vorhanden!', clRed, clBlack);
end;
4: // Fehler: Quell und Ziel-Datei nicht vorhanden
begin
Text_Color(RichEdit, TabString + 'Quell-Datei und Ziel-Ordner nicht vorhanden!',
clRed, clBlack);
end;
5: //Fehler: Datum / Uhrzeit gleich
begin
Text_Color(RichEdit, TabString + 'Kopiervorgang nicht erforderlich',
clBlue, clBlack);
RichEdit.Lines.Add(TabString + 'Datei in Ziel-Ordner schon vorhanden!');
RichEdit.Lines.Add(TabString + 'Datum / Uhrzeit gleich! (' + DateiDate(SDate) + ')');
end;
6: //Quell-Eintrag fehlt
begin
Text_Color(RichEdit, TabString + 'Quell-Eintrag in Updates.ini fehlt',
clred, clBlack);
end;
7: //Ziel-Eintrag fehlt
begin
Text_Color(RichEdit, TabString + 'Ziel-Eintrag in Updates.ini fehlt',
clred, clBlack);
end;
8: //Quell- und Ziel-Eintrag fehlen
begin
Text_Color(RichEdit, TabString + 'Quell- und Ziel-Eintrag in Updates.ini fehlen',
clred, clBlack);
end;
9: //---Reserve---
begin
end;
10: //---Reserve---
begin
end;
11: //---Reserve---
begin
end;
12: //---Reserve---
begin
end;
13: //Kopierfunktion ist ausgeschalten
begin
Text_Color(RichEdit, TabString + 'Kopierfunktion ist ausgeschalten!',
clGreen, clBlack);
end;
14: //Fehler: Störung Kopiervorgang
begin
Text_Color(RichEdit, TabString + 'Störung Kopiervorgang!', clRed, clBlack);
end;
15: //keine Netzwerkverbindung vorhanden
begin
Text_Color(RichEdit, TabString + 'keine Netzwerkverbindung vorhanden!',
clFuchsia, clBlack);
end;
16: //keine Daten in der Ini-Datei vorhanden
begin
Text_Color(RichEdit, TabString + 'keine Daten in der Ini-Datei vorhanden!',
clOlive, clBlack);
end;
end;
//Quell-Datei und Ziel-Ordner anhängen; nur wenn die Variablen einen Text
//enthalten
If StartDatei <> '' then
RichEdit.Lines.Add(TabString + StartDatei);
If ZielOrdner <> '' then
RichEdit.Lines.Add(TabString + ZielOrdner);
//letzte Zeile
RichEdit.Lines.Add('');
//------------------------------------------------------------------------------
end;
procedure LogFile(const FileName, Erweitert: string);
const
Trennzeile = '-----------------------------------------';
var
fs: TFileStream;
S: string;
Hnd: Integer;
begin
//Wenn das LogFile nicht existiert, dann wird es erzeugt
If not FileExists(FileName) then
begin
Hnd := FileCreate(FileName);
FileClose(Hnd);
end;
//Aus der vorhandenen Datei lesen
fs := TFileStream.Create(FileName, fmOpenread);
try
SetLength(S, fs.Size);
fs.ReadBuffer(S[1], fs.Size);
finally
fs.Free;
end;
//String für Textdatei erweitern
S := DateTimeToStr(now) + #13#10 + #13#10 + Erweitert + Trennzeile + #13#10 + S;
//In die vorhandene Datei schreiben
fs := TFileStream.Create(FileName, fmOpenWrite);
try
fs.WriteBuffer(S[1], Length(S));
finally
fs.Free;
end;
end;
kurze Info:
procedure Text_Color(RichEdit: TRichEdit; Farbe_Text: String; Color_Anfang, Color_Ende: TColor);
Erstellt in das RichEdit einen neuen farbigen Eintrag.
RichEdit = In das zu schreibende RichEdit,
Farbe_Text = Der String der eingefügt werden soll,
Color_Anfang = Farbe des einzufügenden Textes,
Color_Ende = Farbe des nachfolgenden Textes
Infos(RichEdit: TRichEdit; Code: Integer; StartDatei, ZielOrdner: String; Value: Integer);
Wertet einen Fehlercode aus und schreibt dementsprechend Einträge in die RichEdit
RichEdit = In das zu schreibende RichEdit,
Code = Fehlercode
StartDatei,
ZielOrdner = sind Übergabeparameter (dienten meiner function)
procedure LogFile(const FileName, Erweitert: string);
schreibt ein Logfile. Neue Einträge werden an den Anfang gesetzt
FileName = DateiName
Erweitert = Der String der hinzugefügt werden soll
------------
Diese Proceduren sollen dir nur ein wenig Unterstützung geben und muss nach deinen Wünschen angepasst werden.
mfg
Helmi
>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
|