Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Typisierte Datei Sortieren (https://www.delphipraxis.net/93488-typisierte-datei-sortieren.html)

Stillmatic 6. Jun 2007 18:20


Typisierte Datei Sortieren
 
Ich habe eine Frage bezüglich einer Sortierung(BubbleSort) einer Typisierten Datei!!

Delphi-Quellcode:
  TID = cardinal;
  TName = string[50];
  TTyp = (CD, DVD);
  TLaenge = cardinal;
  TKategorie = (Film,Musik,Software,SonstigeDaten);



TMedium = record
             ID : TID;
            Name : TName;
            Typ : TTyp;
       Kategorie : TKategorie;
       case TKategorie of
            Film :(FilmFormat: TName;Laenge : TLaenge;FilmKategorie : TName);
            Musik:(MusikFormat,MusikKategorie : TName);
         Software:(Hersteller,Schlüssel : TName);
    SonstigeDaten:(Zusatz : String[70]);
Das ist der Record!!


Delphi-Quellcode:
Type Datei = File of TMedium;
Das ist die Datei!!!

Nun möchte ich zum Beispiel die Datei nach ID Sortieren, beginnend mit der 1 und endend mit der Filesize(Datei)!!



Wenn man jetzt das Hauptgerüst eines BubbleSorts hat .....

Delphi-Quellcode:

 for x:=1 to FileSize(Datei) do
    for y:=1 TO (FileSize(Datei)-1) do
Wie könnte man jetzt die Datei sortieren????
Man muss ja den Index eines Datensatzes mit dem Index eines anderen Datensatzes vergleichen, nur wie greift man darauf zu??

hoika 6. Jun 2007 18:26

Re: Typisierte Datei Sortieren
 
Hallo,

geht denn Seek nicht ?


Heiko

Stillmatic 6. Jun 2007 18:39

Re: Typisierte Datei Sortieren
 
Ja toll!

Mit seek kann ich an eine Stelle in der Datei springen, aber woher weiß ich wo die ID denn immer steht??

Ich kann ja auch nicht direkt fragen ob

(Seek(Datei,y+1) < Seek(Datei,y))

das gilt??

Und auf die ID in der Datei kann man nicht zugreifen, oder??

Klaus01 6. Jun 2007 18:59

Re: Typisierte Datei Sortieren
 
Zitat:

Zitat von Stillmatic
Ja toll!

Mit seek kann ich an eine Stelle in der Datei springen, aber woher weiß ich wo die ID denn immer steht??

Ich kann ja auch nicht direkt fragen ob

(Seek(Datei,y+1) < Seek(Datei,y))

das gilt??

Und auf die ID in der Datei kann man nicht zugreifen, oder??

Mit Seek gehst Du auf eine bestimmte Dateiposition, gelesen wird da noch nichts.
Du müsstest dann mit read einen Datensatz lesen.
Mit FilePos bekommst Du heraus wo in der Datei der "Lesezeiger" steht.

Wie groß ist die Datei dennt?
Geht es nicht, das Du die Datensätze in eine TList einliest und diese dann sortierst?

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz