![]() |
Re: Migration von Firebirdprojekt (Delphi 2006 nach delphi 2
Also ich habe mir ursprünglich mal eine Funktion geschrieben die da lautet:
Delphi-Quellcode:
Über Sinn oder Unsinn der Funktion lässt sich bekanntlich streiten...
FUNCTION UTF8Decode2(Wert: RawByteString): WideString;
var Temp: WideString; begin Temp := trim(UTF8Decode(Wert)); if Temp = '' then begin Temp := Wert; end;//if Temp = '' then begin Result := Temp; end; Ich habe nur gemerkt: Wenn die Funktion UTF8Decode fehlgeschlagen ist, gibt sie einen leeren String aus. Dann habe ich den Wert genommen, der drinstand und als Ergebnis ausgegeben. Dieses Verhalten gilt für die NEUE UTF8Decode NICHT mehr. Er verschluckt einfach die Zeichen die er nicht verarbeiten kann und gibt also keinen leeren String wieder. Ich untersuchte die ALTE Funktion auf Delphi 2006 und stellte fest, dass diese etwas anders arbeitet wie die, aus Delphi 2009. Was ja sein muss. Eine Übernahme der ALTEN Funktion würde ja ein COPYRIGHT Recht verletzen. Zum Test habe ich sie trotzdem mal übernommen und die Funktion wandelte sich zu:
Delphi-Quellcode:
STEP1 deswegen, weil ich feststellte, dass INTERN in der Systemunit noch eine Funktion Namens
FUNCTION UTF8Decode2(Wert: RawByteString): WideString;
var Temp: WideString; begin Temp := trim(UTF8Decode_Step1(Wert)); if Temp = '' then begin Temp := Wert; end;//if Temp = '' then begin Result := Temp; end;
Delphi-Quellcode:
aufgerufen wird.
UnicodeToUtf8
Diese wiederum unterscheidet sich WIEDER von der in Delphi2009. Ich übernahm die alte Methode zum Test und stellte noch einen PChar auf PAnsiChar um. Auf der Funktion wurde dann die
Delphi-Quellcode:
Ich weis, alles nicht copyrightgerecht und ich werde mit dieser Methode irgendwann
UnicodeToUtf8_Step2
gegen die Wand fahren weil ich irgendwas nicht beachtet habe. Aber es war erst einmal TESTWEISE ein Weg, wie ich es zumindest nachvollziehen und eventuell für zumindest die alte Datenbank weiternutzen könnte, wenn ich entsprechend aus dem Originalcode lerne und ihn nicht 100%ig übernehme. Bis dann Ingo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 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