AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi ReadString aus TIniFile fehlerhaft
Thema durchsuchen
Ansicht
Themen-Optionen

ReadString aus TIniFile fehlerhaft

Ein Thema von Moony · begonnen am 6. Jan 2012 · letzter Beitrag vom 6. Jan 2012
Antwort Antwort
Seite 1 von 2  1 2      
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 11:12
Hallo zusammen,

habe eine Textdatei im Iniformat. In dieser Datei wird an einer Stelle ein SQL Befehl gespeichert, den ich dann mit TIniFile.ReadString() auslese. Der SQL Befehl beinhaltet Sonderzeichen im Alias als Feldname wie 'Gültig bis'.
Jetzt mein Problem: Leider werden die Sonderzeichen als Hyroglyphen eingelesen und nicht wie es sein sollte. In der Datei steht der Befehl richtig drin, im Programm kann der SQL Befehl leider nicht ausgefhrt werden.

Hoffe auf Hilfe! Danke & Gruß,
Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#2

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 11:21
Wurde die Ini mit einem anderen Programm erstellt? Es scheint sich ja um unterschiedliche Kodierungen zu handeln.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#3

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 11:40
Ja, die Datei wurde von einer Webanwendung geschrieben und ich verarbeite diese. Die Kodierung der Datei ist UTF8 ohne BOM.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#4

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 12:00
Dann versuch mal
StringVar := Utf8Decode(Ini.ReadString(...)); [edit] Oder Utf8ToString, da UTF8Decode als veraltet markiert ist. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#5

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 12:19
Die Kodierung der Datei ist UTF8 ohne BOM.
Und woher soll dann die Auslesefunktion das wissen?

Der Standard ist nunmal ANSI, also wird auch als ANSI ausgelesen.



Zu dem Vorschlag von DeddyH:
Aufpassen, denn dein Delphi 2010 ließt es als ANSI aus, konvertiert es nach Unicode (ANSI>Unicode) und Utf8Decode würde das Unicode jetzt als RawString (hoffentlich zufällig mit einer Umkodierung nach ANSI) übernehen, versuchen als UTF-8 zu interpretieren und dann nach versuchen nach Unicode umzuwandeln.


Ich weiß auch garnicht, ob UTF-8 von der verwendeten WinAPI, welche in TIniFile gekapselt ist, überhaupt unterstützt wird.


Verwende stattdessen z.B. TMemIniFile und gib als Encoding das UTF-8 explizit an.
TMemIniFile arbeitet intern mit einer TStringList, welche es auch ohne BOM uslesen und konvertieren kann, danach werden alle Leseoperationen intern über diese StringList abgehandelt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Jan 2012 um 12:25 Uhr)
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#6

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 12:31
Ok, dann versuche ich es mit Tmeminifile und melde mich zurück.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#7

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 13:09
So, habe es versucht, aber ich besitze keine Encoding-Eigenschaft. Ich arbeite bei diesem Projekt mit Delphi 2007.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 13:27
So, habe es versucht, aber ich besitze keine Encoding-Eigenschaft. Ich arbeite bei diesem Projekt mit Delphi 2007.
Dann ist string ein Alias auf Ansistring, egal ob TInfile oder TMemInifile.
Probier mal AnsiToUtf8 o. ä..
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#9

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 13:28
Das kann man aber auch sagen, wenn im Profil D2010 angegeben ist. Neuer Versuch:
Delphi-Quellcode:
var
  s: UTF8String;
begin
  ...
  s := UTF8String(Ini.ReadString(...));
  ShowMessage(UTF8ToAnsi(s));
Ob der explizite Typecast etwas bringt, weiß ich nicht, schaden kann es aber wohl kaum. In einem kurzen Test wurde zumindest bei mir "Gültig bis" korrekt ausgegeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#10

AW: ReadString aus TIniFile fehlerhaft

  Alt 6. Jan 2012, 14:10
Danke, das funktioniert....

Habe jetzt lediglich UTF8ToAnsi an eine Variable des Typs AnsiString übergeben und es klappt.
Ich weiß, daß ich nichts weiß! Sokrates
  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 09:01 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