Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fortschrittsanzeige bei Ladevorgang mir Read(); (https://www.delphipraxis.net/7884-fortschrittsanzeige-bei-ladevorgang-mir-read-%3B.html)

Yheeky 23. Aug 2003 22:49

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Versteh ich net :roll:

Chewie 23. Aug 2003 22:53

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Du liest doch die einzelnen Datensätze (in diesem Fall Records) in einer Schleife aus der Datei. Da du den Maximalwert kennst, wäre eine for-Schleife am geeignetesten. Somit gibt der Wert der Schleifenvariable den Fortschritt an.

Benutzt du eine repeat- oder while-Schleife, musst du selbst eine Integer-Variable als Zähler deklarieren und pro Lesevorgang um eins hochzählen.

Yheeky 23. Aug 2003 23:00

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Ich benutze im Moment keine Schleife. Der Code, den ich oben gepostet habe ist alles. Keine for, while oder sonstige Schleife...

Christian Seehase 23. Aug 2003 23:04

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Moin Yheeky,

dann wirst Du wohl auch keine Fortschrittsanzeige hinbekommen können.

Chewie 23. Aug 2003 23:05

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Ach so, ich sehe, du liest das Array in einem Rutsch aus der Datei.
So kannst du natürlich keine Fortschrittsanzeige implementieren, da du ja nur eine Aktion durchführst. Probiers mal so:

Delphi-Quellcode:
  Datei : File of TTest;
  Datenliste : TTest;
  i: Integer;

[...]

AssignFile(Datei,ProgrammPfad + test.dat');
Reset(Datei);
SetLength(DatenListe, FileSize(Datei));
for i := 1 to FileSize(Datei) do
  Read(Datei,DatenListe[i-1]);
CloseFile(Datei);
Jetzt hast du in i deinen Fortschritt stehen.

Yheeky 23. Aug 2003 23:13

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Bekomme 2 Fehlermeldungen:

Code:
[Fehler] Unit1.pas(84): Inkompatible Typen
[Fehler] Unit1.pas(88): Array-Typ erforderlich
bei den Zeilen

Code:
SetLength(Datenliste, FileSize(Datei));
Read(Datei,Datenliste[i-1]);

Chewie 23. Aug 2003 23:16

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Ach so, sorry, DatenListe muss ein Array of TTest sein, um mehrere Datensätze speichern zu können. Oder wofür sonst solltest du eine Fortschrittsanzeige brauchen, wenn nicht, um mehrere Datensätze auszulesen?

Yheeky 23. Aug 2003 23:20

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Möchte einfach überprüfen, wieviel Prozent des aktuellen Datensatzes bereits geladen wurde...

Luckie 23. Aug 2003 23:25

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Bei einem einzelnen Datensatz wirst du Pech haben.

Hansa 23. Aug 2003 23:38

Re: Fortschrittsanzeige bei Ladevorgang mir Read();
 
Oh je, was soll denn das da werden :?: Nebenbei bemerkt, Dein Source kann so nicht gehen. Du liest nur einen Record. Und das Filesize die Anzahl der Datensätze angibt halte ich für ein Gerücht. Das mit dem Array ist auch Blödsinn. @Chewie: Nix für ungut. :wink:

Der Record-Typ ist TTest. Die Größe ermittelst Du mit
Delphi-Quellcode:
sizeof (TTest);
Wohlgemerkt, von EINEM Datensatz :!:

Die Datei ist File OF TTest. Die Dateigröße kriegst Du jetzt mit
Delphi-Quellcode:
filesize (Datei);
raus.

Und das alles in bytes. Teilst Du nun filesize / sizeof so muß eine ganze Zahl herauskommen. Das ist die Gesamtanzahl der Datensätze. Jetzt kommt der Zähler ins Spiel. Setze den am Anfang auf 0 und bei jedem gelesenen Datensatz zählst Du eins hoch.

So und nun kommt die Progressbar oder die komische Gauge ins Spiel. Wie das geht weiß ich nicht, bisher noch nicht gebraucht. Du mußt da mit Sicherheit den Zähler in Bezug zur Gesamtgröße benutzen. Dürfte einfach sein, sofern die Vorarbeiten stimmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr.
Seite 2 von 3     12 3      

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