AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ini Speichern dauert lange!!

Ein Thema von Wadim · begonnen am 8. Mai 2004 · letzter Beitrag vom 25. Jul 2004
Antwort Antwort
Wadim

Registriert seit: 31. Aug 2003
185 Beiträge
 
#1

Ini Speichern dauert lange!!

  Alt 8. Mai 2004, 16:49
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:
//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
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Ini Speichern dauert lange!!

  Alt 8. Mai 2004, 17:01
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 BigIni verwenden. Dürfte auch schneller sein und hatt schon bei einigen Entwicklern unerklärliche Fehler beseitigt.
  Mit Zitat antworten Zitat
Wadim

Registriert seit: 31. Aug 2003
185 Beiträge
 
#3

Re: Ini Speichern dauert lange!!

  Alt 8. Mai 2004, 17:07
Zitat von Bernhard Geyer:
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 BigIni verwenden. Dürfte auch schneller sein und hatt schon bei einigen Entwicklern unerklärliche Fehler beseitigt.
hmm und wie verwende ich bigini??

kannst vielleicht ein kleines beispiel reinposten mit speicher und laden??

oder mus ich einfach nur bei den uses statt inifiles biginifiles eintragen??
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Ini Speichern dauert lange!!

  Alt 8. Mai 2004, 17:09
Zitat von Wadim:
hmm und wie verwende ich bigini??
Uses-Anweisung anpassen und statt TIniFile TBigIniFile (oder war der Klassenname TBiggerIni) verwenden.
Die Verwendung ist fast 100% Identisch wie bei TIniFile.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Ini Speichern dauert lange!!

  Alt 8. Mai 2004, 17:16
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
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Ini Speichern dauert lange!!

  Alt 8. Mai 2004, 18:08
Du hast neben dem ständigen Neuerzeugen des Inifiles auch ein paar andere Sachen nicht soooo gut gelöst.
  • Du hast Section und Key vertauscht
  • Warum sollte man die Nummer des Eintrages speichern?
  • Außerdem hattest du für jedes SubItem fixen Code geschrieben, die kann man doch auch in einer Schleife durchlaufen.


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;
  Mit Zitat antworten Zitat
Wadim

Registriert seit: 31. Aug 2003
185 Beiträge
 
#7

Re: Ini Speichern dauert lange!!

  Alt 8. Mai 2004, 18:19
jo danke schonmal mit den tipps - werd ich alles morgen ausprobieren

das mit:
writeinteger('index', 'count', SubItems.Count); brauch ich nur um die einträge später wieder zu laden und richtig zusammenzufügen

mfg wadim
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Ini Speichern dauert lange!!

  Alt 8. Mai 2004, 18:39
nee, brauchst du nicht!
Wenn du pro zeile eine Section anleegst (und nicht verkehrtrum), dann weißt du doch wieviele Values eine Section hat.
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#9

Re: Ini Speichern dauert lange!!

  Alt 24. Jul 2004, 21:41
Zitat:
1, Windows-Ini-Dateien können maximal 32 (oder warens 64) kByte groß werden.
Ganz sicher? Meine Datei ist knapp 200 KB groß und funzt perfekt... oder liegt es dara, dass ich die Dateiendung zu .mym geändert habe?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Ini Speichern dauert lange!!

  Alt 25. Jul 2004, 11:45
Zitat von MCXSC:
Zitat:
1, Windows-Ini-Dateien können maximal 32 (oder warens 64) kByte groß werden.
Ganz sicher? Meine Datei ist knapp 200 KB groß und funzt perfekt... oder liegt es dara, dass ich die Dateiendung zu .mym geändert habe?
Als ich vor ein paar jahren mit Visual C++ und den Win32-API-Funktionen (unter NT) eine große Ini-Daeti anlegen wollte ging es nicht. Evtl. hat 2000/XP diese Grenze nicht mehr. Aber wenn dein Programm auf allen Win32-BS-Versionen laufen soll, so mußt Du den kleinsten gemeinsamen Nenner berücksichtigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 13:57 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