AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

INI Russisch

Ein Thema von greenmile · begonnen am 29. Jan 2017 · letzter Beitrag vom 30. Jan 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.635 Beiträge
 
Delphi 12 Athens
 
#1

AW: INI Russisch

  Alt 29. Jan 2017, 21:54
Das im Create übergebene Encoding wirkt lediglich auf eine neu geschriebene Datei. Damit eine UTF8-Datei als solche lesend erkannt werden kann, muss sie ein entsprechendes BOM an Anfang haben. Wie hast du die Datei denn als UTF8 abgespeichert?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#2

AW: INI Russisch

  Alt 29. Jan 2017, 22:42
Die Windows API unterstützt ANSI und UTF-16, aber NICHT UTF-8, wenn es um die Funktionen GetPrivateProfileString/WritePrivateProfileString geht. TIniFile greift auf eben diese Funktionen zurück. Im Total Commander Forum wurde das übrigens auch schon mehrfach diskutiert.

TL;DR: Benutze entweder ANSI oder UTF-16, aber kein UTF-8 (sofern du Klassen verwendest, die auf TIniFile aufbauen).

EDIT: Merke grade, dass es ja um TMemIniFile geht. Egal, ich lass den Kommentar trotzdem mal stehen.

Grüße
Dalai

Geändert von Dalai (29. Jan 2017 um 22:48 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: INI Russisch

  Alt 30. Jan 2017, 08:53
Ich verstehe das Problem nicht ganz - Sind das immer wieder neue Dateien die von jemand anderem erstellt werden oder hast du das in der Hand? Wenn ja, dann öffne die Datei doch einmal z.B. in Notepad++ und stelle die Kodierung fest auf z.B. "UTF-8 mit BOM".

Dann kann man z.B.
Zitat:
[someValues]
greetingMessage=Сука Блять
problemlos mit
Delphi-Quellcode:
var
   iniFile:   TMemIniFile;
   greeting:   String;
begin
   iniFile := TMemIniFile.Create('y:\someIniFile.ini');
   greeting := iniFile.ReadString('someValues', 'greetingMessage', '');
   ShowMessage(greeting);
end;
lesen.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#4

AW: INI Russisch

  Alt 30. Jan 2017, 09:26
Auf solche Spielereien würde ich mich nicht verlassen.
Es braucht dann nur jemand mit dem Windows Editor die Datei zu bearbeiten und zu speichern und schon zeigt das Programm falsche Texte an.
Ini schön und gut, aber für Sprachen zu speichern ist es keine gute Wahl.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: INI Russisch

  Alt 30. Jan 2017, 09:30
Es braucht dann nur jemand mit dem Windows Editor die Datei zu bearbeiten und zu speichern und schon zeigt das Programm falsche Texte an.
Tut es das? Das wäre mir neu.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#6

AW: INI Russisch

  Alt 30. Jan 2017, 09:33
Ich stand mal vor demselben Problem und sobald man die Ini geändert hat und andere Zeichen als A-Z, 0-9 drin waren, wurde es falsch angezeigt.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#7

AW: INI Russisch

  Alt 30. Jan 2017, 09:34
Doch, das passiert gerne. Aber nur in heterogenen Systemen(Mac und Win über Parallels greifen auf gleiche Ini zu) oder wenn Software sich beim Speichern nicht an die Vorgabe bzw. den Originalzustand hält.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#8

AW: INI Russisch

  Alt 30. Jan 2017, 09:39
Ich glaube am besten wäre es sich einen eigenen Reader zu bauen der ebenfalls eine Art Ini-Format ausließt.
Oder sogar was komplett anderes.

XML statt Ini vielleicht. Weiß nicht, ob das dann mit Umlauten usw funktioniert.
Jedenfalls braucht man für diese XML-Unit fast keine Änderungen an den aktuellen Ini-Stellen im Code zu treffen:
http://www.swissdelphicenter.ch/de/showcode.php?id=2269
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: INI Russisch

  Alt 30. Jan 2017, 09:40
Aber wenn
  • beliebige Software hinterrücks die Kodierung von bestehenden Dateien ändert
  • und die eigentliche Software eine bestehende Kodierung erwartet

hat man generell ein Problem. Das hat ja weder speziell etwas mit ini-Dateien, noch mit Lokalisierung zu tun.
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: INI Russisch

  Alt 30. Jan 2017, 16:13
Das im Create übergebene Encoding wirkt lediglich auf eine neu geschriebene Datei. Damit eine UTF8-Datei als solche lesend erkannt werden kann, muss sie ein entsprechendes BOM an Anfang haben. Wie hast du die Datei denn als UTF8 abgespeichert?
Die wurde im Notepad++ als UTF8 gespeichert.
  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 23:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz