Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#37

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 16. Feb 2009, 22:21
Habe jetzt noch eine wenig ausprobiert,und bin leider doch nicht so weit.

Ich habe die entgegennahme jetzt direkt in die Verarbeitung der Schnittstellendaten eingepflegt.

Habe jetzt mal Texte geändert und so, sieht dann so ein Datensatz aus.

#$A#$D#$A'Ereignis: 6091'#$D#$A'Datum: 09.12.2008, Uhrzeit: 18:31:41'#$D#$A'Unscharf'#$D#$A'Hauptbereich: 001, Unterbereich: 000'#$D

Ergebnis als Textdatei gespeichert Hab den mal als Quellcode gewandelt, damit man die Kommentare erkenne kann

Delphi-Quellcode:
Ereignis: 5773 //Immer so
Datum: 09.12.2008, Uhrzeit: 19:07:31 //Immer so
Sabotagemeldergruppe: 0004 EIN //Doch sehr viele Varianten erscheint aber in jedem Datensatz
AP E/A E: 04 Differential-Eingang //Wenig Varianten, aber dafür nicht in jedem Datensatz vorhanden
Hauptbereich: 001, Unterbereich: 000 //Text kann evtl. auch "vbaelrvgbaelrvub" sein

//(Hauptbereich z.B. könnte auch einen selbst erstellten Namen habe)


Ereignis: 5774
Datum: 09.12.2008, Uhrzeit: 19:07:31
AP E/A E: 05 Sabotage Sirene EIN
Hauptbereich: 001
Ich hoffe du kannst erkennen, das die Datensätze doch unterschiedlich sein können. Ich übergebe jetzt doch wieder einen kompletten Datensatz an die Parsefunktion.

Mein Problem ist jetzt, immer noch die genaue Zuweisung der Daten in die richtigen Zeilen

Wenn ich mir den kompletten Datensatz ansehe, habe ich ja immer die Trennung zwischen den Zeilenvorschüben, Leider weiß ich immer noch nicht wie ich erkennen soll, das in der Mitte ein Teildatensatz fehlt.

Eréignis ist klar, damit fängt der Datensatz immer an
Datum somit auch kein Problem und
Uhrzeit bekomme ich auch gefilter.
Der Teilnehmer Text, wenn er da ist, könnte ich mir momentan noch vorstellen in an den Kürzeln AP, IE, MAKRO AE zu erkenne.
Der Bereich ist immer der letzte Datensatz allerdings ohne festen Namen

Vieleicht kannst du mir mal folgende Funktionen von der ParsenUtils erklären. Da habert es nämlich bei mir.

Delphi-Quellcode:
procedure TMyBaseParser.SkipTrash;
begin
  while (DataPointer < Length(Data)) and (Data[DataPointer] in [#13, #10, #32]) do
    Inc(DataPointer);
end;

function TMyBaseParser.GetTextLength(UpToLineEnd: Boolean): Integer;

  function IsTerminatingChar(CharIndex: Integer): Boolean;
  begin
    if UpToLineEnd then
      Result := Data[CharIndex] in [#13, #10]
    else
      Result := Data[CharIndex] in [#13, #10, #32];
  end;

var
  CurPointer: Integer;
begin
  Result := -1;
  CurPointer := DataPointer;
  while Result < 0 do
  begin
    while (CurPointer < Length(Data)) and not IsTerminatingChar(CurPointer) do
      Inc(CurPointer);
    if (CurPointer + 1 < Length(Data)) and not IsTerminatingChar(CurPointer + 1) then
      Inc(CurPointer)
    else
      Result := CurPointer - DataPointer;
    if CurPointer = Length(Data) then
      Result := CurPointer - DataPointer + 1;
  end;
end;
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat