![]() |
Fortschritt beim Speichern in Gauge darstellen
Hallo ihr :hi:
ich habe ein Programm geschrieben mit dem ich Keys für meine Programme generiere kann. Es generiertzunächst die angegebene Anzahl an Keys, dann überprüft es die doppelten und löscht sie. 8) Im nächsten Schritt kann ma die Keys in einer InI-Datei speichern. hier der code:
Delphi-Quellcode:
Allerdings dauert dies bei ca 100.000 Keys seeeehr lange :( , deswegen wollte ich nun den speicherfortschritt darstellen. Aber wie stelle ich das in TGauge dar?
var
IniPath, SP_Name : String; begin SP_Name := ' - '+E_00_Name.Text; IniPath := ChangeFileExt(Paramstr(0), SP_Name+'.ini'); if SaveListBoxToIni(IniPath, 'ListBox1', ListBox1.Items) then ShowMessage('Gespeichert!'); end; Ich hoffe ihr könnt mir helfen, deswegen schon mal vielen dank im vorraus. MFG Death's Shadow |
Re: Fortschritt beim Speichern in Gauge darstellen
Nun ja, ohne zu wissen, wie bei dir SaveListBoxToIni aussieht, kann man dir schlecht helfen.
|
Re: Fortschritt beim Speichern in Gauge darstellen
sry .... mein fehler
Delphi-Quellcode:
MFG Death's Shadow
function SaveListBoxToIni(const IniPath, Section: String;
List: TStrings): Boolean; var k: Integer; begin with TIniFile.Create(IniPath) do try EraseSection(Section); for k := 0 to List.Count - 1 do WriteString(Section, IntToStr(k), Format('"%s"',[List[k]])); Result := True; finally Free end; end; |
Re: Fortschritt beim Speichern in Gauge darstellen
Na da hast du es doch. Erhöhe den Wert von TGauge innerhalb der for-Schleife.
|
Re: Fortschritt beim Speichern in Gauge darstellen
Herzlich willkommen in der Delphi-PRAXiS, DeathsShadow!
Das .ini-Format setzt enge Grenzen bei der Dateigröße und der Größe eines Abschnitts. In ![]() Wenn du wirklich 100000 Einträge ablegen möchtest, solltest du dich nach Alternativen umsehen. Selbst bei der Verwendung von ![]() Gruß Hawkeye |
Re: Fortschritt beim Speichern in Gauge darstellen
Wenn du eine TStringList verwendest, dauert das Speichern mit SaveToFile() von 100000 Zeilen mit "Keys" weniger als eine Sekunde.
Der Unterschied in der Zugriffsgeschwindigkeit zwischen [TListBox].Items und TStringList liegt mal ganz grob bei 1:100. Der Grund ist, dass bei [TListBox].Items für jeden Eintrag eine Windows Message verschickt wird und damit um Welten langsamer ist, als bei TStringList mit dem direkten Zugriff auf den RAM. Du hast jetzt 2. Möglichkeiten: a.) wie geplant einen Progressbar einbauen und den Benutzer warten lassen b.) mit TStringList arbeiten und die Speicherzeit so drastisch reduzieren, dass der Progressbar überflüssig wird |
Re: Fortschritt beim Speichern in Gauge darstellen
Was haben denn 100.000 Einträge in einer ListBox zu suchen? :shock: Erwartest Du im Ernst, das irgendwer die 100.000 Einträge durchscrollt?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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