Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen? (https://www.delphipraxis.net/190773-program-hat-nach-programmstart-bereits-%7E50mb-von-der-festplatte-gelesen.html)

himitsu 6. Nov 2016 19:22

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
TIniFile arbeitet mit der entsprechenden WinAPI

Und dort wird für JEDEN EINZELNEN Zugriff auf einen Wert/Gruppe die Datei komplett neu öffnet/geladen/geparst und am Ende wieder komplett geschrieben (bei Schreibzugriffen).

Jim Carrey 6. Nov 2016 19:34

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Ich habe das Ganze jetzt mal ein wenig abgeändert.
Beim Startvorgang meines Programms wird die Ini-Datei einmalig geladen und dann erst wieder freigegeben, wenn das Formular komplett sichtbar ist. Das mache ich über das OnPaint-Event (WMFormVisible, habe ich im Forum schon einmal geposted).

Diese einmalig geladene Ini-Datei wird dann vom Startvorgang (DPR-Datei) bis OnPaint verwendet.
Vorher wurde die mindestens 2 dutzend male geladen.

Fritzew 6. Nov 2016 20:18

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Jetzt bin ich verwirrt,

Zitat:

Diese einmalig geladene Ini-Datei wird dann vom Startvorgang (DPR-Datei) bis OnPaint verwendet.
Du liest Einstellungen für Dein Programm und machst das an einem visuellen Ereignis fest.
Das verstehe ich jetzt nicht. Was haben die Einstellungen mit dem visuellen Teil zu tun?

Meiner Meinung nach:

Beim erzeugen der Klasse (Form) werden die Einstellungen gelesen und gut ist.

Mischen von Funktionalität und visuellen Sachen ist einfach nicht gut.

Spätestens bei dem Versuch so ein Programm auf eine andere Plattform zu bekommen hast Du ein Problem.


Überdenke doch mal das Design

Gruss Fritz

Jim Carrey 6. Nov 2016 20:40

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Zitat:

Mischen von Funktionalität und visuellen Sachen ist einfach nicht gut.
In meinem Fall funktioniert das einwandfrei. Ich werde es irgendwann mal abändern, aber aktuell nicht.

Zitat:

Spätestens bei dem Versuch so ein Programm auf eine andere Plattform zu bekommen hast Du ein Problem.
Andere Plattformen als Windows interessieren mich genau soviel wie die C++ - kein bisschen :P

Delphi-Laie 6. Nov 2016 21:06

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Zitat:

Zitat von jaenicke (Beitrag 1352773)
Deshalb ist TMemIniFile, das eine echte und schnellere Delphiimplementierung ist, die deutlich bessere Alternative, wenn man noch INIs nutzen möchte.

Das glaube ich Dir auf's Wort. Also gleich darangemacht, aber leider kann man TIniFile nicht einfach mit TMemIniFile ersetzen und den auf die IniFiles bezogenen Quelltext ansonsten belassen. Eine geschlagene Stunde experimentierte ich - auch mit dem just empfohlenen Process Monitor. Des Rätsels Lösung: Um das Schreiben auf den Datenträger zu erzwingen, ist - zusätzlich zu TIniFile - ein UpdateFile nötig.

Jim Carrey 6. Nov 2016 21:11

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Zitat:

Das glaube ich Dir auf's Wort. Also gleich darangemacht, aber leider kann man TIniFile nicht einfach mit TMemIniFile ersetzen und den auf die IniFiles bezogenen Quelltext ansonsten belassen.
Wieso das nicht? bei mir ging es.

Man muss nur vor dem Free UpdateFile machen, was ein wenig umständiglich ist.

Uwe Raabe 6. Nov 2016 21:12

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1352807)
Das glaube ich Dir auf's Wort. Also gleich darangemacht, aber leider kann man TIniFile nicht einfach mit TMemIniFile ersetzen und den auf die IniFiles bezogenen Quelltext ansonsten belassen. Eine geschlagene Stunde experimentierte ich - auch mit dem just empfohlenen Process Monitor. Des Rätsels Lösung: Um das Schreiben auf den Datenträger zu erzwingen, ist - zusätzlich zu TIniFile - ein UpdateFile nötig.

Nicht zwingend! Zutaten: Eine aktuelle Delphi-Version und
Delphi-Quellcode:
AutoSave
. Siehe hier.

Natürlich kann man nicht an allen Stellen
Delphi-Quellcode:
TIniFile
verwenden und dann hintenrum ein
Delphi-Quellcode:
TMemInifile
unterschieben. Dafür gibt es eben
Delphi-Quellcode:
TCustomIniFile
.

Sherlock 7. Nov 2016 08:43

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Blöde Frage: Wie groß ist Deine Exe? Die gilt es ja auch beim Start einzulesen.

Sherlock

bra 7. Nov 2016 09:20

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Eventuell sind das auch irgendwelche DLLs, die nachgeladen werden?

Jim Carrey 7. Nov 2016 09:28

AW: Program hat nach Programmstart bereits ~50MB von der Festplatte gelesen?
 
Keine DLLs. Die exe ist 6MB groß.

Einen Fehler habe ich mittlerweile eliminimiert. AUßerdem habe ich überall auf TCustomIniFile und TMemIniFile umgstellt. Mal gucken wie sich das nun ändert, habe es noch nich getestet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.
Seite 2 von 3     12 3      

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