Re: IniFile.ReadString liest nicht alles aus!
@Pierre,
ich habe den Eindruck, dass das Problem in Windows enthalten ist oder durch PChar/SetString verursacht wird: Zitat:
Ich habe einmal Folgendes versucht:
Delphi-Quellcode:
Auch dabei habe ich einen leeren String (auch Length(s1) = 0) erhalten.
with Tinifile.Create('VS.Ini')
do begin try s1 := ReadString( 'ZZZ', 'x1', '''' ); s2 := ReadString( 'ZZZ', 'x2', '""' ); Edit1.Text := s1; Edit2.Text := s2; RxSpinEdit1.Value := Length(s1); RxSpinEdit2.Value := Length(s2); finally Free; end; end; Die anderen Vorschläge - z.B. TMemIniFile - dürften aus den gleichen Gründen nicht helfen. Ich schlage statt dessen folgende Änderungen vor: 1. Definiere eine globale Konstante:
Delphi-Quellcode:
2. Ersetze in den Ini-Dateien alle Einträge durch diesen Wert; das geht mit Suchen + Ersetzen.
const scIniHochkommata = 'aB1rA2kA3dA4bR5a'; // oder ähnlichen Schrott
3. Ersetze überall dort, wo Du die Prüfung auf Hochkommata benötigst, dies durch diese Konstante. Auch dabei hilft Delphi mit "Suchen in Dateien". Das ist zwar immer noch umständlich (abhängig von der Anzahl der Units/Prüfungen), dürfte aber Deinen Vorstellungen am ehesten entsprechen. Jürgen |
Re: IniFile.ReadString liest nicht alles aus!
Hab das Problem jetzt anders gelöst, zwar unschön aber egal. Ich habe einfach allen Einträgen automatisch eine 0 (Null) hintenrangesetzt welche ich beim Laden wieder lösche. Egal, hauptsache es geht auch mit den "".
@Jürgen: Hab dein Posting grad gelesen. Danke dir aber ich mache es jetzt so wie gerade geschrieben, der Aufwand dürfte in etwas der gleiche sein. Trotzdem vielen Dank. ;) |
Re: IniFile.ReadString liest nicht alles aus!
Hi Pierre,
laut INI-ISO-Schlagmichtot musst du die doppelten Anführungszeichen durch diese beiden Zeichen \" ersetzen. |
Re: IniFile.ReadString liest nicht alles aus!
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: IniFile.ReadString liest nicht alles aus!
@Daniel G: Das ist schön, bescheuert ist nur immer, dass der Button immer am Ende der Selektion steht, bei einem Strg+A also immer ganz unten, wo man ihn nicht sieht, und das allerschlimmste ist ja, dass da nichtmal der Shortcut Strg+Shift+Y hilft :wall:
Ich arbeite deshalb vorzugsweise mit dem Refactoring. |
Re: IniFile.ReadString liest nicht alles aus!
Falls die Einträge
Code:
als gleichwertig betrachtet werden können, hilft vielleicht der folgende Code:
Key1=""
Key2=
Delphi-Quellcode:
Gruß Hawkeye
type
TIniFileEx = class (TIniFile) public function ReadString2 (const aSection, aKey, aDefault: string): string; end; function TIniFileEx.ReadString2 (const aSection, aKey, aDefault: string): string; begin if ValueExists(aSection, aKey) then begin Result := ReadString(aSection, aKey, aDefault); if (Result = '') then Result := '""'; end else Result := aDefault; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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