Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   XML Datei im Memo will nicht... (https://www.delphipraxis.net/71565-xml-datei-im-memo-will-nicht.html)

turboPASCAL 17. Jun 2006 08:42


XML Datei im Memo will nicht...
 
Hi,

hab da mal ne Frage. In WinXp kann man mit dem Programm msinfo32 *.nfo - Systeminformationsdateien
anlegen. Diese Datei scheint ein XML Format zu sein. Mit dem Notepad (o.ä.) kann man sich den
Dateiinhalt problemlos anzeigen lassen, wenn ich jedoch mit Delphi diese Datei in ein Memo laden
möchte klappt das nicht. Es werden nur ein, zwei Zeichen angezeigt.

Beim betrachten mit einem Hexeditor habe ich herausgefunden das die *.nfo - Dateien am Anfang
mit "FFFE" beginnen.

Ich das nicht verstehen, wer kann helfen ? :gruebel:

marabu 17. Jun 2006 09:07

Re: XML Datei im Memo will nicht...
 
Hallo Matti,

die Datei ist in UTF-16 kodiert. Du liest also zuerst das Byte Order Mark FFFE.

Grüße vom marabu

turboPASCAL 17. Jun 2006 09:17

Re: XML Datei im Memo will nicht...
 
Ha, danke.

Habe ich gerade selbst bemerkt. :wall: Nun muss ich auch noch 'n Konverter machen... :?

:wink:

marabu 17. Jun 2006 13:59

Re: XML Datei im Memo will nicht...
 
Ich weiß ja nicht was du vorhast, aber wenn die externe Code-Wandlung eine Option für dich ist, dann nimm RECODE aus dem GNU-Projekt. Oder lies mal diesen thread: c code nach delphi uebersetzen

marabu

Bernhard Geyer 17. Jun 2006 20:13

Re: XML Datei im Memo will nicht...
 
Zitat:

Zitat von turboPASCAL
Habe ich gerade selbst bemerkt. :wall: Nun muss ich auch noch 'n Konverter machen... :?

Must Du nicht. Das ElPack und die TNTWare-Komponenten beinhalten eine TStringlist die auf Widestrings beruht und solche Unicode-Codierten Textdateien laden kann. Ich glaube auch in der Code-Library gibts dafür auch etwas.

turboPASCAL 18. Jun 2006 11:01

Re: XML Datei im Memo will nicht...
 
Zitat:

Zitat von marabu
Ich weiß ja nicht was du vorhast, ...

Nix all zu wichtiges. ;)

Ich möchte nur eine Unicodedatei in einem Memo darstellen.

Zitat:

Zitat von marabu
... aber wenn die externe Code-Wandlung eine Option für dich ist, dann nimm RECODE aus dem GNU-Projekt. [...]

Der Code ist mir ein wenig zu "dick" für mein Programm, aber danke für den Link den ich gut gebrauchen kann.

Zitat:

Zitat von Bernhard Geyer
... Das ElPack und die TNTWare-Komponenten beinhalten eine TStringlist die auf Widestrings beruht und solche Unicode-Codierten Textdateien laden kann.

Jupp, habe ich versucht zu installieren aber irgend etwas wollte nicht so recht. der Compieler brach mit einer Fehlermeldung ab...

Zitat:

Zitat von Bernhard Geyer
Ich glaube auch in der Code-Library gibts dafür auch etwas.

Da hab ich (noch) nix passendes gefunden.

Mein bisheriger Ansatz:

- Datei öffnen und checken welche Unicodeversion (TFileStream)
- Datei in Memorystream "importieren"
- Zeichen auswerten (zB. Byte 1 lesen und ist Byte 2 vorhanden als "?" darstellen)
- Memo den Memorystream übergeben

Bernhard Geyer 18. Jun 2006 12:00

Re: XML Datei im Memo will nicht...
 
Zitat:

Zitat von turboPASCAL
Jupp, habe ich versucht zu installieren aber irgend etwas wollte nicht so recht. der Compieler brach mit einer Fehlermeldung ab...

Und welche?

Zitat:

Zitat von turboPASCAL
- Zeichen auswerten (zB. Byte 1 lesen und ist Byte 2 vorhanden als "?" darstellen)

Schon mal probiert ein €-Zeichen damit zu erkenne?

turboPASCAL 18. Jun 2006 12:27

Re: XML Datei im Memo will nicht...
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von turboPASCAL
Jupp, habe ich versucht zu installieren aber irgend etwas wollte nicht so recht. der Compieler brach mit einer Fehlermeldung ab...

Und welche?

Delphi-Quellcode:
type
{TNT-WARN TDateTimeField}
  TTntDateTimeField = class(TDateTimeField{TNT-ALLOW TDateTimeField})
Zitat:

[Fehler] TntDB.pas(23): Undefinierter Bezeichner: 'TDateTimeField'
[Fehler] TntDB.pas(23): Klassentyp erwartet
[Fehler] TntDB.pas(25): Methode 'SetAsString' nicht in Basisklasse gefunden
[Fehler] TntDB.pas(29): Undefinierter Bezeichner: 'TDateField'
[Fehler] TntDB.pas(29): Klassentyp erwartet
[Fehler] TntDB.pas(31): Methode 'SetAsString' nicht in Basisklasse gefunden
[Fehler] TntDB.pas(35): Undefinierter Bezeichner: 'TTimeField'
[etc. ...]
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von turboPASCAL
- Zeichen auswerten (zB. Byte 1 lesen und ist Byte 2 vorhanden als "?" darstellen)

Schon mal probiert ein €-Zeichen damit zu erkenne?

Nein, könne man aber auch als "EUR" darstellen. ;)


// Edit:

Zitat:

Zitat von turboPASCAL
Jupp, habe ich versucht zu installieren aber irgend etwas wollte nicht so recht. der Compieler brach mit einer Fehlermeldung ab...

Hat sich erledigt, hatte nicht das Package für D6 PE :wall:


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