Announcement

Collapse
No announcement yet.

UniCode-IniFile?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • UniCode-IniFile?

    Hallo,<p>
    ich habe meine Übersetzungen bisher oft in einer Ini abgelegt, diese habe ich dann mit TMemIniFile geladen. Nun hat mir jemand eine russische Datei geschickt. Ich vermute mal, die Ini-Datei ist nun Unicode:<br>
    Hier mal die erste Zeile:<br>
    Klartext: [LangOptions]<br>
    Hex: FF FE 5F 00 4C 00 61 00 6E 00 67 00 4F 00 70 00<p>
    Naja, mein Problem ist nun folgendes: Jegliche Versuche, mit TMemIniFile die Datei zu lesen schlägt fehl. Es werden immer nur die Default-Werte oder einfach nix zurückgegeben. Hat jemand eine Idee?<p>
    Schöne Grüße, Mario Noack<p>
    PS: Mein System zum Probieren: WinXP, D6.02
    Schöne Grüße, Mario

  • #2
    Versuch mal mit Notepad zu oeffnen. Notepad ist unicode-faehig. In ASCII abspeichern.<br>
    Ich kenne keine INI-Funktionen, die Unicode koennen

    Comment


    • #3
      Das ist natürlich nicht so ideal Es sind russische Zeichen.<br>Naja, dann muss ich wohl noch mal ein bischen experimentieren. Gibt es beim "normalen" Einlesen von solchen Dateien irgendwas zu beachten. Geht das überhaupt in Delphi?<p>
      Schöne Grüße, Mario Noac
      Schöne Grüße, Mario

      Comment


      • #4
        Hallo Mario,

        Der Vorsatz "FF FE" weißt auf eine Unicode-Datei (mit Little Endian) hin. Falls Du ein paar $ für ein Komponentensammlung ausgeben kannst, würde ich dir wärmstens http://www.eldos.org/elpack/ empfehlen. Ist ein vollständiger Satz von Unicode-Controls und sonstigen Klassen (Widestring-List-Klasse, welche solche Dateien laden kann).

        Wenn Du die dort verhandene TElWideString-Klasse mit der Bigini-Pascal-Implementierung von http://www.hinzen.de/delphi/index.html verheiratest (Austausch der dort verwendeten TStrings/TStringList durch TElWideString/TElWideStringlist) sollte es möglich sein auch mit Unicode-Inidateien arbeiten zu können.

        Bernhar

        Comment


        • #5
          Na fuer TWideStringList sollte die Jedi Code Library ausreichen 8http://delphi-jedi.org/CODELIBJCL).<br>
          Ansonsten empfiehlt es sich mal ein Stueck Registry zu exportieren. Ab Win 2000 ergibt das ein Regedit 5 Format das in Unicode ist. Die Struktur ist die einer INI-Datei. Damit erhaelst du ein schoenes Vorbild fuer deine INI-Dateien

          Comment


          • #6
            Danke für die Tipps! Daran werde ich mich mal versuchen..
            Schöne Grüße, Mario

            Comment


            • #7
              Hallo Robert,

              wir hatenauch die TWideStringList in Verwendung. Haben aus 2 Gründen gewechselt:

              1, Verwenden sowieso das ElPack. Und um nicht 2 Widestring-Listen zu haben und zwischen diesen immer hin und her convertieren zu müssen haben wir uns aufs ElPack-Widestrings geeignet.

              2, Hatten Probleme mit der Art der Speicherung von CRLF in der TWideStringList. Hat andere Zeichen für den Zeilenumbruch verwendet als es Windows (Notepad) macht

              Comment


              • #8
                Ich habe erste Erfolge damit TWideStringList gehabt Jo, an meine Daten komme ich damit ran, jedenfalls konnte ich sie auf ein UnicodeHTMLLabel von TMS-Software ausgeben.<p>
                Aber wenn ich Euch richtig verstehe, muss ich alle Listboxen, Labels und so weiter umstellen. Richtig interessant wird das ja dann beim Menü, den Buttons und den MessageBoxen! Ist das alles im ElPack drin? Reicht das Standard oder spricht ausser DB-Fähigkeit noch was für das Professional?<p>
                Gibt es VCL-Controls, die ich nicht umsetzen kann?<p>
                Schöne Grüße, Mario Noac
                Schöne Grüße, Mario

                Comment


                • #9
                  Hallo Mario,

                  es ist alles im ElPack drin - auch XP-Theme-Unterstützung. Von Button über Menü, MessageDialog, Treeview, .... TMS ist zwar auch dran auf Unicode umzustellen (ergänzen), aber die sind noch nicht so weit.

                  Ich denke mal du meinst diesen Vergleich: http://www.eldos.org/elpack/packages.html.

                  Falls es wirklich auf die paar $ ankommt wird die Std. ausreichen (Haben selbst eine Professional-Side-Lizenz).

                  Was wird nicht umgesetzt:

                  - Drucken wird nicht erweitert (QReport bzw. Fastreport). Hier mußt Du dir ein entsprechendes Reportingtool mit Unicode-Unterstützung suchen

                  - Dateizugriff auf Dateien mit Unicode-Dateinamen (Datei öffnen/speichern). Dies wurden auch deshalb nicht umgesetzt, da dies von Win9x/ME nicht unterstützt wird.

                  - Ein DBGrid mit Unicode gibt es erst in einer Beta-Version (dürfte sich aber die nächsten 2-3 Wochen ändern)

                  Sonst bin ich damit voll zufrieden. Gefundene Fehler werden meißt innerhalb von einen Tag beseitigt.

                  Bernhar

                  Comment


                  • #10
                    > 2, Hatten Probleme mit der Art der Speicherung von CRLF in der TWideStringList. Hat andere Zeichen für den Zeilenumbruch verwendet als es Windows (Notepad) macht.

                    Sag mal an welche Zeichen, ich schreibe dann einen Fehlerreport

                    Comment


                    • #11
                      Hallo Robert,

                      Notepad (Windows) verwendet als CRLF 0D0A (000D000A). In Unicode.pas wird hier als Default-Seperator $2028 verwendet. Ist meines Erachtens nicht geschickt gewählt, hier diesen Wert zu nehmen (Ist zwar laut Unicode-Standard der Line Seperator, aber in der Windows-Welt ist halt der "altertümliche" Wert 000D000A angesagt.

                      Wie weit ist eigentlich Mike Lischke noch an Jedi beteiligt?

                      Die Unicode.pas wird ja mittlerweile auch bei einem anderen Projekt eingesetzt (http://home.ccci.org/wolbrink/tnt/delphi_unicode_controls.htm), welches sich zum Ziel gesetzt hat, Unicode für Delphi verfügbar zu machen (jedoch nur unter NT/2000/XP). Evtl. könnt ihr ja diesen Entwickler dazu überreden sich an Jedi zu beteiligen. Einer Nachfrage von mir hat er geschrieben, das er sich nichts mehr auf den Rechner lädt, was nicht Unicode ist (und das ist ja die Jedi-VCL immer noch)

                      Comment


                      • #12
                        Mike ist immer noch froehlich dabei. Er hat ja wohl Arbeitsplatzwechsel und Umzug hinter sich und war ein bischen unsichtbar

                        Comment


                        • #13
                          Ich habe nun mal ein bischen mit den Komponenten experimentiert. Tja, unter Windows 2000 waren die Ergebnisse OK, unter Windows 98 nicht. Das kann aber an dem Dateizugriff über Jedi(?) gelegen haben, weil es Win98 von Haus aus nicht hat, liege ich da richtig oder etwas nicht? Ohje....<p>
                          Jetzt stellt sich mir natürlich die Frage: Was hat man in Russland gemacht, wenn man Programm auf Windows 98 ausgeführt hat? Über Unicode kann es ja dann nicht gelaufen sein!? Mein Problem ist: Ich möchte nicht Anwendungen umstellen, und dann sagen: Läuft in Deutsch auf allen Systemen, Russisch aber nur auf WinNT,2k,XP... Gibt es da einen Königsweg?<p>
                          Vielen Dank, Mario Noac
                          Schöne Grüße, Mario

                          Comment


                          • #14
                            Hallo Mario,

                            wenn du mit den "Komponenten" das ElPack meinst, so unterstützt es auch unter Win9x/ME Unicode (Windows 9x besitzt ca. 10 Unicodefähige API-Funktionen die für die darstellung ausreichen). Du benötigst nur einen Font der die benötigten Zeichen beinhaltet (z.B. MS Arial Unicode). So läuft unsere Applikation auch unter Win98 Chinesisch mit üäö... bzw. Chinesische Daten werden unter Win9x deutsch dargestellt. Wenn Du keinen passenden Font besitzt, so werden z.B. nur leere Blöckchen dargestellt (, je nach Font).

                            Wenn Du unter Window 98 probleme mit der Anzeige deiner Inidatei mittels notepad hast liegt das an Notepad. Unter 9x/ME kann es keine Unicode-Dateien darstellen. Es ließt immer Bytweise die Daten ein.

                            Bernhar

                            Comment


                            • #15
                              Moin Mario,<br>
                              <br>
                              eventuell hilft's Dir auch weiter wenn Du direkt die API GetPrivateProfileString verwendest. Dazu müsstest Du sie Dir allerdings selber importieren (GetPrivateProfileStringW um genau zu sein), da bei Delphi ja immer nur die A(nsi) Versionen enthalten sind.<br>
                              Unter 9x müsste dazu allerdings erst einmal der MS Layer for Unicode installiert werden.<br>
                              <br>
                              Ciao<br>
                              Chri

                              Comment

                              Working...
                              X