AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sortierung von Daten in Textdateien

Ein Thema von Carsten1234 · begonnen am 28. Aug 2009 · letzter Beitrag vom 1. Sep 2009
 
Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#15

Re: Sortierung von Daten in Textdateien

  Alt 31. Aug 2009, 14:33
So, ich habe es jetzt gelöst.
Meine Ereignisliste, die ich vom Gerät bekommen, mit den beiden genannten "Indexen" versehe und auf HDD zwischen speichere, sieht (z.B.) so aus:
Delphi-Quellcode:
00772;25.11.09;12:44:22 ;;0;1;
00771;31.08.09;12:44:05 ;;0;2;
00771;31.08.09;12:44:06 ;;0;3;
00781;31.08.09;13:05:36 ;;0;4;
00782;31.08.09;13:05:36 ;;0;5;
00783;31.08.09;13:07:20 ;;0;6;
00784;30.09.09;13:07:11 ;;0;7;
00784;30.09.09;13:07:19 ;;0;8;
00784;30.09.09;13:07:26 ;;0;9;
00785;30.09.09;13:07:28 ;;0;10;
00786;31.08.09;13:07:28 ;;0;11;
00787;31.08.09;14:35:59 ;;0;12;
00788;31.08.09;14:35:59 ;;0;13;
00789;31.08.09;14:36:06 ;;0;14;
00790;31.08.09;14:41:36 ;;0;15;
00791;31.08.09;14:41:36 ;;0;16;
00792;31.08.09;14:41:46 ;;0;17;
00793;31.08.09;14:45:44 ;;0;18;
00794;31.08.09;14:45:44 ;;0;19;
00795;31.08.09;14:45:52 ;;0;20;
00722;19.08.09;02:28:57 ;;1;21;
00723;19.08.09;02:29:38 ;;1;22;
00724;19.08.09;02:29:47 ;;1;23;
00725;19.08.09;02:29:55 ;;1;24;
00726;19.08.09;02:30:08 ;;1;25;
Jeder Datensatz wird anhand der Semikolons aufgesplittet in ein Object:
Delphi-Quellcode:
  TOneEvent = class(TObject)
    Datum : Str;
    Uhrzeit : Str;
    (...)
    FileIndex : integer;
    DataSetIndex: integer;
  end;
Diese Objekte werden in einer TObjectList gespeichert.
Delphi-Quellcode:
  TEventList = class(TObjectList)
  (...)
  end;
Nach dem Füllen der TeventList wird eine selbstdefinierte Sort-Routine aufgerufen, die da lautet:
Delphi-Quellcode:
function SortEventList(Item1, Item2: pointer): Integer;
begin
// ***** FileIndex1 < FileIndex2
  if (TOneEvent(Item1).FileIndex < TOneEvent(Item2).FileIndex) then
  begin
    if (TOneEvent(Item1).DataSetIndex < TOneEvent(Item2).DataSetIndex) then
      Result:= -1
    else
    if (TOneEvent(Item1).DataSetIndex > TOneEvent(Item2).DataSetIndex) then
      Result:= 1
    else
      Result:= 0;
  end
  else
// ***** FileIndex1 > FileIndex2
  if (TOneEvent(Item1).FileIndex > TOneEvent(Item2).FileIndex) then
  begin
    if (TOneEvent(Item1).DataSetIndex < TOneEvent(Item2).DataSetIndex) then
      Result:= -1
    else
    if (TOneEvent(Item1).DataSetIndex > TOneEvent(Item2).DataSetIndex) then
      Result:= 1
    else
      Result:= 0;
  end
  else
// ***** FileIndex1 = FileIndex2
  if (TOneEvent(Item1).FileIndex = TOneEvent(Item2).FileIndex) then
  begin
    if (TOneEvent(Item1).DataSetIndex < TOneEvent(Item2).DataSetIndex) then
      Result:= 1
    else
    if (TOneEvent(Item1).DataSetIndex > TOneEvent(Item2).DataSetIndex) then
      Result:= -1
    else
      Result:= 0;
  end;
end;
Anzeigeergebis in meiner Tabelle:
Delphi-Quellcode:
31.08.09;14:45:52 ;;0;20;
31.08.09;14:45:44 ;;0;19;
31.08.09;14:45:44 ;;0;18;
31.08.09;14:41:46 ;;0;17;
31.08.09;14:41:36 ;;0;16;
31.08.09;14:41:36 ;;0;15;
31.08.09;14:36:06 ;;0;14;
31.08.09;14:35:59 ;;0;13;
31.08.09;14:35:59 ;;0;12;
31.08.09;13:07:28 ;;0;11;
30.09.09;13:07:28 ;;0;10;
30.09.09;13:07:26 ;;0;9;
30.09.09;13:07:19 ;;0;8;
30.09.09;13:07:11 ;;0;7;
31.08.09;13:07:20 ;;0;6;
31.08.09;13:05:36 ;;0;5;
31.08.09;13:05:36 ;;0;4;
31.08.09;12:44:06 ;;0;3;
31.08.09;12:44:05 ;;0;2;
25.11.09;12:44:22 ;;0;1;
19.08.09;02:30:08 ;;1;25;
19.08.09;02:29:55 ;;1;24;
19.08.09;02:29:47 ;;1;23;
19.08.09;02:29:38 ;;1;22;
19.08.09;02:28:57 ;;1;21;
Das sieht jetzt erstmal ziemlich durcheinander aus, bedeutet aber (von unten nach oben gelesen):
Am 25.11.09 hat jemand das Datum verstellt auf 31.08.2009. Dann traten ein paar Ereignisse auf, bis jemand wieder am 31.08.09, 13:07:20 Uhr, das Datum erneut verstellte auf den 30.09.09.
Am 30.09.09 traten wieder ein paar Ereignisse auf, bis am 30.09.09, 13:07:28 Uhr, erneut das Datum im Gerät veränderte auf den 31.08.09.

Gruß, Carsten
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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