![]() |
Re: aus ms access db im utf-8 format einlesen
Man muss richtig casten, dann klappt es mit den WideStrings.
Delphi-Quellcode:
var
f : TField; .... while not ADOTable1.eof do begin child:= doc.createElement('Records'); root.appendchild(child); for i:=0 to ADOTable1.FieldCount-1 do begin // erst mal das aktuelle Feld in Variable merken f := ADOTable1.Fields[i]; child1:=doc.createElement(f.FieldName); child.appendchild(child1); // prüfe, ob der Inhalt (NULL) ist if f.IsNull then temp := '(NULL)' // Sonderbehandlung für WideStringfelder // nur mit dem Cast kommt man an das Property Value vom Typ WideString ran // (evtl. ginge es auch über .AsVariant) // .AsString geht definitiv nicht, da .AsString immer einen Ansistring liefert else if f is TWideStringField then temp := TWideStringField(f).Value // property Value: WideString else temp := f.AsString; // für numerische Felder, usw. child1.appendChild(doc.createTextNode(UTF8encode(temp))); end; ADOTable1.Next; end; |
Re: aus ms access db im utf-8 format einlesen
danke für die zahlreichen tipps, aber delphi7 reicht für das problem leider nicht aus :cry:
da nützen auch die vielen gut gemeinten casts nix! it's time for a change ... >delphi7 :thumb: |
Re: aus ms access db im utf-8 format einlesen
Zitat:
Evtl. noch folgende Patches in der adodb.pas nötig (jedenfalls bei D6 nötig). Zeile 1060: adLongVarBinary, adLongVarBinary, adEmpty, adChar, adChar, adBigInt, nach adLongVarBinary, adLongVarBinary, adEmpty, adChar, adVarWChar, adBigInt, Zeile 1178: ftString, ftWideString: Result := adVarChar; nach ftString: Result := adVarChar; ftWideString: Result := adVarWChar; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 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