AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi IniFile.ReadString liest nicht alles aus!
Thema durchsuchen
Ansicht
Themen-Optionen

IniFile.ReadString liest nicht alles aus!

Ein Thema von Balu der Bär · begonnen am 11. Aug 2006 · letzter Beitrag vom 13. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Balu der Bär
(Gast)

n/a Beiträge
 
#1

IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:07
Moin,

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

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,
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:10
ja wie?

test = '' oder test = nil ?

und ist das nicht beides das selbe?

EDIT: oder willst du literal '""' rauskriegen? dann kann ich dir auch nciht helfen
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#3

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:13
Ja, ich möchte das die Ini korrekt ausgelesen wird und in der Variablen dann "" steht.

variable := '""'; (also)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:14
Das setze das Default auf was anderes wie den Leerstring und überprüfe dann auf ihn.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:16
@mkinzler: und was macht er dann, wenn die variable nicht vorhanden ist?

'' <> '""'
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#6

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:16
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:17
Zitat von DGL-luke:
@mkinzler: und was macht er dann, wenn die variable nicht vorhanden ist?

'' <> '""'
Dann steht dort ja der default drin.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:19
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;
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
@balu: TMemIniFile ist sowieso im allgemeinen vorzuziehen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#9

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:22
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 )finde noch eine Möglichkeit es mit IniFile auszulesen.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: IniFile.ReadString liest nicht alles aus!

  Alt 11. Aug 2006, 16:26
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)
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:52 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