Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   TIniFile.ReadString: liest "" nicht aus (https://www.delphipraxis.net/168336-tinifile-readstring-liest-nicht-aus.html)

hoika 16. Mai 2012 08:08

TIniFile.ReadString: liest "" nicht aus
 
Hallo #,

in einer Ini steht ein Pfad

"C:\Program Files (x86)\Common Files\microsoft shared\Virtualization Handler\CVH.EXE" "Microsoft Word Starter 2010"

Lese ich den mit TIniFile aus, bekomme ich
C:\Program Files (x86)\Common Files\microsoft shared\Virtualization Handler\CVH.EXE" "Microsoft Word Starter 2010

also ohne die " beim Start und Ende !!!

Mit TMemIniFile geht es.

Was ist denn hier kaputt ???

ReadString benutzt ja direkt GetPrivateProfileString,
also ist der Fehler doch dort auch schon vorhanden ???

Was nun ?
Die Ini ist nicht von mir, kann ich also nicht ändern.


Heiko

DeddyH 16. Mai 2012 08:11

AW: TIniFile.ReadString: liest "" nicht aus
 
Steig doch einfach auf TMemIniFile um :zwinker:

hoika 16. Mai 2012 08:16

AW: TIniFile.ReadString: liest "" nicht aus
 
Hallo,

geht nicht, ist zu viel Code.
Die Frage ist doch, warum geht das nicht ?

Schreiben kann er denn String ja, nur Lesen nicht.


Heiko

DeddyH 16. Mai 2012 08:26

AW: TIniFile.ReadString: liest "" nicht aus
 
Aus dem MSDN zu GetPrivateProfileString:
Zitat:

If the string associated with lpKeyName is enclosed in single or double quotation marks, the marks are discarded when the GetPrivateProfileString function retrieves the string.
Das ist also dokumentiertes Verhalten.

jaenicke 16. Mai 2012 08:38

AW: TIniFile.ReadString: liest "" nicht aus
 
GetPrivateProfileString ist ohnehin als veraltet markiert und wird in Zukunft in Windows ohnehin rausfliegen und nur noch emuliert werden. Insofern macht es ohnehin keinen Sinn mit den alten INI-Funktionen zu arbeiten.
Es sollte daher immer TMemIniFile benutzt werden.
(Wenn es denn schon ausgerechnet INIs sein müssen... :roll: Aber wenn die nicht von dir sind, ist es halt leider so...)

himitsu 16. Mai 2012 08:44

AW: TIniFile.ReadString: liest "" nicht aus
 
Nja, wenn TMemIniFile ordentlich arbeiten würde, dann müßte es eigentlich auch diese " oder ' weglassen. :stupid:


Beim WritePrivateProfileString steht leider nicht, daß es sowas reinmacht. (obwohl ich es erwarten würde)

Wer erstellt denn diese Dateien?
Code:
xxx=""C:\Program Files (x86)\Common Files\microsoft shared\Virtualization Handler\CVH.EXE" "Microsoft Word Starter 2010""
?

hoika 16. Mai 2012 09:38

AW: TIniFile.ReadString: liest "" nicht aus
 
Hallo,

tja,

das ist der Pfad einer Office Starter Edition ... ;(
Da der bei jeder Installation anders ist (sein kann),
kann ich ihn nicht aus der Registry auslesen.


Heiko

Bjoerk 16. Mai 2012 09:39

AW: TIniFile.ReadString: liest "" nicht aus
 
Zitat:

Zitat von hoika (Beitrag 1166739)
Hallo, geht nicht, ist zu viel Code. [..]

Es ist lediglich TIniFile durch TMemInifile zu ersetzen. Allerdings dort, wo es write Kommandos gab, ist vor Free ein UpdateFile erforderlich.

blauweiss 16. Mai 2012 10:19

AW: TIniFile.ReadString: liest "" nicht aus
 
Zitat:

Zitat von Bjoerk (Beitrag 1166749)
Zitat:

Zitat von hoika (Beitrag 1166739)
Hallo, geht nicht, ist zu viel Code. [..]

Es ist lediglich TIniFile durch TMemInifile zu ersetzen. Allerdings dort, wo es write Kommandos gab, ist vor Free ein UpdateFile erforderlich.

Alternativ könnte eine nachgeschaltete Funktionalität, die einen String mit leading+trailing quotation marks versieht, von beherrschbarer Komplexität sein. :roll:

Gruss,
blauweiss

DeddyH 16. Mai 2012 10:27

AW: TIniFile.ReadString: liest "" nicht aus
 
Wenn man sicher davon ausgehen kann, dass es sich um eine Pfadangabe handelt, sehe ich da auch kein Problem.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.
Seite 1 von 2  1 2      

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