Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Tabellenähnliche Komponente für Logfiles gesucht

  Alt 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! <<
  Mit Zitat antworten Zitat