AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fortschritt beim Speichern in Gauge darstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Fortschritt beim Speichern in Gauge darstellen

Ein Thema von DeathsShadow · begonnen am 28. Sep 2008 · letzter Beitrag vom 29. Sep 2008
Antwort Antwort
DeathsShadow

Registriert seit: 26. Apr 2008
22 Beiträge
 
#1

Fortschritt beim Speichern in Gauge darstellen

  Alt 28. Sep 2008, 21:09
Hallo ihr
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:
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;
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?

Ich hoffe ihr könnt mir helfen, deswegen schon mal vielen dank im vorraus.

MFG Death's Shadow
Florian S.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Fortschritt beim Speichern in Gauge darstellen

  Alt 28. Sep 2008, 21:12
Nun ja, ohne zu wissen, wie bei dir SaveListBoxToIni aussieht, kann man dir schlecht helfen.
Michael
  Mit Zitat antworten Zitat
DeathsShadow

Registriert seit: 26. Apr 2008
22 Beiträge
 
#3

Re: Fortschritt beim Speichern in Gauge darstellen

  Alt 28. Sep 2008, 21:17
sry .... mein fehler
Delphi-Quellcode:
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;
MFG Death's Shadow
Florian S.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Fortschritt beim Speichern in Gauge darstellen

  Alt 28. Sep 2008, 21:19
Na da hast du es doch. Erhöhe den Wert von TGauge innerhalb der for-Schleife.
Michael
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Fortschritt beim Speichern in Gauge darstellen

  Alt 28. Sep 2008, 22:27
Herzlich willkommen in der Delphi-PRAXiS, DeathsShadow!

Das .ini-Format setzt enge Grenzen bei der Dateigröße und der Größe eines Abschnitts. In diesem Artikel kannst du mehr darüber erfahren.

Wenn du wirklich 100000 Einträge ablegen möchtest, solltest du dich nach Alternativen umsehen. Selbst bei der Verwendung von Delphi-Referenz durchsuchenTMemIniFile kannst du ohne einige Tricks keine akzeptablen Laufzeiten beim Schreiben erreichen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Fortschritt beim Speichern in Gauge darstellen

  Alt 28. Sep 2008, 23:33
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Fortschritt beim Speichern in Gauge darstellen

  Alt 29. Sep 2008, 07:56
Was haben denn 100.000 Einträge in einer ListBox zu suchen? Erwartest Du im Ernst, das irgendwer die 100.000 Einträge durchscrollt?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:09 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