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/)
-   -   Delphi IniFile.ReadString liest nicht alles aus! (https://www.delphipraxis.net/74950-inifile-readstring-liest-nicht-alles-aus.html)

Balu der Bär 11. Aug 2006 16:07


IniFile.ReadString liest nicht alles aus!
 
Moin,

ich habe gerade 30 Minuten den Fehler in meinem Programm gesucht, habe ihn auch gefunden und konnte dir Schuld sogar wenn mir wegschieben. :P

Problem:

Delphi-Quellcode:
var
 ini : TIniFile;
/// etc...
test := ini.ReadString('wasweiß', 'ich', '');
Damit liest man normalerweise eine Ini-Datei aus. Klappt aber leider überhaupt nicht wenn zwei Anführungszeichen als Werte drinstehen also zum Beispiel:
Zitat:

[wasweiß]
ich=""
In diesem Falle kommt nichts in meiner Variablen an, sie bleibt leer. Das ist fatal für mein Programm, da auch da mal zwei "" in den Inis stehen. Weiß jemand wie es hinbekomme dies trotzdem auszulesen?

Vielen Dank schonmal,

DGL-luke 11. Aug 2006 16:10

Re: IniFile.ReadString liest nicht alles aus!
 
ja wie?

Delphi-Quellcode:
test = ''
oder
Delphi-Quellcode:
test = nil
?

und ist das nicht beides das selbe?

EDIT: oder willst du literal '""' rauskriegen? dann kann ich dir auch nciht helfen :stupid:

Balu der Bär 11. Aug 2006 16:13

Re: IniFile.ReadString liest nicht alles aus!
 
Ja, ich möchte das die Ini korrekt ausgelesen wird und in der Variablen dann "" steht.

Delphi-Quellcode:
variable := '""';
(also)

mkinzler 11. Aug 2006 16:14

Re: IniFile.ReadString liest nicht alles aus!
 
Das setze das Default auf was anderes wie den Leerstring und überprüfe dann auf ihn.

DGL-luke 11. Aug 2006 16:16

Re: IniFile.ReadString liest nicht alles aus!
 
@mkinzler: und was macht er dann, wenn die variable nicht vorhanden ist?

Delphi-Quellcode:
'' <> '""'

Balu der Bär 11. Aug 2006 16:16

Re: IniFile.ReadString liest nicht alles aus!
 
Zitat:

Zitat von mkinzler
Das setze das Default auf was anderes wie den Leerstring und überprüfe dann auf ihn.

Ist ein Problem weil ich dann sehr viel in meinem Code ändern müsste (es wird desöfteren mal auf Leerstrings geprüft). Gibt es keine andere Möglichkeit das auszulesen?

mkinzler 11. Aug 2006 16:17

Re: IniFile.ReadString liest nicht alles aus!
 
Zitat:

Zitat von DGL-luke
@mkinzler: und was macht er dann, wenn die variable nicht vorhanden ist?

Delphi-Quellcode:
'' <> '""'

Dann steht dort ja der default drin.

DGL-luke 11. Aug 2006 16:19

Re: IniFile.ReadString liest nicht alles aus!
 
TIniFile:

Delphi-Quellcode:
function TIniFile.ReadString(const Section, Ident, Default: string): string;
var
  Buffer: array[0..2047] of Char;
begin
  SetString(Result, Buffer, GetPrivateProfileString(PChar(Section),
    PChar(Ident), PChar(Default), Buffer, SizeOf(Buffer), PChar(FFileName)));
end;
:shock: was ist das denn?


TMemIniFile:
Delphi-Quellcode:
begin
  I := FSections.IndexOf(Section);
  if I >= 0 then
  begin
    Strings := TStrings(FSections.Objects[I]);
    I := Strings.IndexOfName(Ident);
    if I >= 0 then
    begin
      Result := Copy(Strings[I], Length(Ident) + 2, Maxint);
      Exit;
    end;
  end;
  Result := Default;
end;
Vielleicht hast du damit mehr Glück.

EDIT:
@mkinzler: aber das will er ja nicht :stupid:
@balu: TMemIniFile ist sowieso im allgemeinen vorzuziehen.

Balu der Bär 11. Aug 2006 16:22

Re: IniFile.ReadString liest nicht alles aus!
 
Also ich habe hier doch ein etwas größeres Projekt und lese insgesamt mehr als 8 Ini-Dateien aus. Um ehrlich zu sein habe ich keine Lust alles auf ein TMemIniFile umzustellen. Trotzdem danke, aber ich hoffe ich (ihr :P )finde noch eine Möglichkeit es mit IniFile auszulesen.

DGL-luke 11. Aug 2006 16:26

Re: IniFile.ReadString liest nicht alles aus!
 
StringReplace(quellcode, 'TIniFile','TMemIniFile');

ist dir zu kompliziert? Wenn du meinst.... (mit GExperts und grep sollte das schnell gehen... hab da aber noch kein projektweites ersetzen gefunden)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 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