![]() |
Fortschrittsanzeige bei Ladevorgang mir Read();
Hi,
ich lade meine Daten wie folgt:
Code:
Kann ich hierzu eine Fortschrittanzeige machen? Wenn ja, wie? Wüsste jetzt nicht, wo ich da ansetzen könnte. Danke schonmal!
Datei : File of TTest;
Datenliste : TTest; [...] AssignFile(Datei,ProgrammPfad + test.dat'); Reset(Datei); Read(Datei,Datenliste); CloseFile(Datei); Gruß Yheeky |
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Mit der Funktion FileSize bekommst du die Anzahl der Datensätze der Datei. Das kannst du benutzen als Max-Wert deiner Fortschrittsanzeige.
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Und TProgressBar nimmt man üblicherweise für eine Fortschrittsanzeige.
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Oder TGauge.
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Ich würde Gauge empfehlen, denn dann steht, ohne dass man was coden muss, auch der Fortschritt in Prozent dabei..
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
ähhmmm, wo ist denn das TGauge? :shock: Also ich habe bestimmt in diesem Jahr 1.000-2.000 Seiten über Delphi gelesen, vom Internet ganz zu schweigen. In der OH ist das Wort ein einziges mal zu finden. Und das noch in Zusammenhang mit was ganz anderem und nur in der englischen. 8)
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Das ist in der Palette "Beispiel". Deshalb ist es wohl auch nicht dokumentiert.
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Ja, da ist es tatsächlich. 8) Aber im 5kg-Handbuch überhaupt nichts zu schreiben finde ich echt unverschämt. :evil:
P.S.: für 59 EUR extra :!: |
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Okay, danke schonmal. Mit FileSize kann ich also den Max-Wert auslesen. Wie aber kann ich die aktuelle Position auslesen?
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Moin Yheeky,
indem Du einen Zähler mitlaufen lässt. |
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Versteh ich net :roll:
|
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. |
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...
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Moin Yheeky,
dann wirst Du wohl auch keine Fortschrittsanzeige hinbekommen können. |
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:
Jetzt hast du in i deinen Fortschritt stehen.
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); |
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Bekomme 2 Fehlermeldungen:
Code:
bei den Zeilen
[Fehler] Unit1.pas(84): Inkompatible Typen
[Fehler] Unit1.pas(88): Array-Typ erforderlich
Code:
SetLength(Datenliste, FileSize(Datei));
Read(Datei,Datenliste[i-1]); |
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?
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Möchte einfach überprüfen, wieviel Prozent des aktuellen Datensatzes bereits geladen wurde...
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Bei einem einzelnen Datensatz wirst du Pech haben.
|
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:
Wohlgemerkt, von EINEM Datensatz :!:
sizeof (TTest);
Die Datei ist File OF TTest. Die Dateigröße kriegst Du jetzt mit
Delphi-Quellcode:
raus.
filesize (Datei);
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. |
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Zitat:
Zitat:
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Nächster Fehler bei SizeOf
Code:
[Fehler] Unit1.pas(82): Anweisung erforderlich, aber Ausdruck vom Typ 'Integer' gefunden
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
@Chewie: Stimmt, ich hatte die physikalische Größe der Datei gemeint. Das wäre dann File of Byte.
@Yheeky: sizeof ist eine Funktion, ansonsten nützt das ohne Source recht wenig. |
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
@Hansa: Schon klar, aber wie soll ich sie aufrufen? SizeOf(TTest) geht nicht, wie du es erwähnt hattest...
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Eine Funktion liefert einen Funktionswert zurück. 8) Wenn Du das nicht hinkriegst, dann vergesse die Progressbar.
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Zitat:
|
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Hi,
schau dir mal dashier an: ![]() Au'revoir, Aya~ |
Re: Fortschrittsanzeige bei Ladevorgang mir Read();
Ich arbeite zwar nicht mit Streams, aber ich schau´s mir mal an, danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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