![]() |
Ini Speichern dauert lange!!
hi,
ich hab folgendes problem, und zwar hab ich mir eine datenbank gebastellt wo sachen in ein listview eintragen kann, bearbeiten und löschen, also alles was dazugehört. nun das klapt zwar aber wenn ich dann die einträge speichern will dann dauert das erstmal eine weile und zweitens das programm schmiert mir dann am ende ab, zwar nicht ganz aber ich kann das fenster dann nicht mehr schließen - jedoch auch nur wenn ich nach dem speichert den befehl close gebe!! hier mal der quellcode den ich verwende:
Delphi-Quellcode:
kann man da was optimieren?? - wichtig ist mir eigentlich das, das programm danach nicht abstürzt - das es bisschen länger dauert ist nicht das schlimmste, sind nur ca. 3-4 sec. bei ca.200 einträge
//hier oben ist noch was....
a := listview1.Items.Count; b := 0; while b <= (a-1) do begin with TIniFile.Create((ExtractFilePath(ParamStr(0))+'Dateiname')) do try WriteString('eintrag1','Irgendwas' + inttostr(b), listview1.Items.Item[b].Caption); WriteString('eintrag2','Irgendwas'+ inttostr (b),listview1.Items.Item[b].SubItems.Strings[0]); WriteString('eintrag3','Irgendwas'+ inttostr (b),listview1.Items.Item[b].SubItems.Strings[1]); WriteString('eintrag4','Irgendwas'+ inttostr (b),listview1.Items.Item[b].SubItems.Strings[2]); writeinteger('index','count',a-1); b := b+1; finally free; end; end; end; close; //...darum ist hier unten auch ein end zuviel |
Re: Ini Speichern dauert lange!!
1, Windows-Ini-Dateien können maximal 32 (oder warens 64) kByte groß werden.
2, Haben deine Listview1.Items immer 3 Subitems? (wird nicht überprüft) Ich würde die Delphi-Implementierung ![]() |
Re: Ini Speichern dauert lange!!
Zitat:
kannst vielleicht ein kleines beispiel reinposten mit speicher und laden?? oder mus ich einfach nur bei den uses statt inifiles biginifiles eintragen?? |
Re: Ini Speichern dauert lange!!
Zitat:
Die Verwendung ist fast 100% Identisch wie bei TIniFile. |
Re: Ini Speichern dauert lange!!
Moin!
Und Zeit kostet bei deinem Code vor allem das ständige anlegen und freigeben der INI Klasse. Das ist bei dem gleichen Dateinamen völlig sinnlos, daher lege die Instanz einmal vor der Schleife an und gebe sie nach der Schleife wieder frei. MfG Muetze1 |
Re: Ini Speichern dauert lange!!
Du hast neben dem ständigen Neuerzeugen des Inifiles auch ein paar andere Sachen nicht soooo gut gelöst.
Auch wenn sich eigentlich XML zum Speichern eines ListViews anbieten würde, es könnte soo gehen:
Delphi-Quellcode:
var
i, j : Integer; begin with TIniFile.Create('c:\Dateiname.ini') do try with ListView1 do for i := 0 to pred(Items.Count) do with Items[i] do begin WriteString('Rec' + IntToStr(succ(i)) , 'Col1' , Caption); for j := 0 to pred(SubItems.Count) do WriteString('Rec' + IntToStr(succ(i)) , 'Col' + IntToStr(j + 2) , SubItems[j]); // Das ist IMHO Schwachfug ;) //writeinteger('index', 'count', SubItems.Count); end; finally Free; end; end; |
Re: Ini Speichern dauert lange!!
jo danke schonmal mit den tipps - werd ich alles morgen ausprobieren :)
das mit:
Delphi-Quellcode:
brauch ich nur um die einträge später wieder zu laden und richtig zusammenzufügen :wink:
writeinteger('index', 'count', SubItems.Count);
mfg wadim |
Re: Ini Speichern dauert lange!!
nee, brauchst du nicht!
Wenn du pro zeile eine Section anleegst (und nicht verkehrtrum), dann weißt du doch wieviele Values eine Section hat. ;) |
Re: Ini Speichern dauert lange!!
Zitat:
|
Re: Ini Speichern dauert lange!!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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