Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Migration von Firebirdprojekt (Delphi 2006 nach delphi 2009) (https://www.delphipraxis.net/141284-migration-von-firebirdprojekt-delphi-2006-nach-delphi-2009-a.html)

FlatCoder 13. Okt 2009 09:05

Re: Migration von Firebirdprojekt (Delphi 2006 nach delphi 2
 
Also ich habe mir ursprünglich mal eine Funktion geschrieben die da lautet:

Delphi-Quellcode:
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;
Über Sinn oder Unsinn der Funktion lässt sich bekanntlich streiten...
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:
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;
STEP1 deswegen, weil ich feststellte, dass INTERN in der Systemunit noch eine Funktion Namens

Delphi-Quellcode:
UnicodeToUtf8
aufgerufen wird.

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:
UnicodeToUtf8_Step2
Ich weis, alles nicht copyrightgerecht und ich werde mit dieser Methode irgendwann
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 09:36 Uhr.
Seite 2 von 2     12   

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