دالة لحذف التشكيل تعمل في الدلفي ولا تعمل في Firebird
#1
السلام عليكم ورحمة الله

إخواني الكرام، أردت برمجة دالة خارجية لـ FireBird (UDF) عن طريق الدلفي 2009، جربت الدالة في الدلفي عملت بنجاح، لكن في FireBird لا تعمل أي شئ ، ترجع لي نفس القيمة التي أدخلتها،

كود :
function withowtTachkil(Const Text : PChar) : PChar; cdecl; var S : String; L : string; C : Char; begin S := string(Text); for C := #$064E to #$0652 do begin S:= StringReplace(S,C,'',[rfReplaceAll]); end; L := S; Result := Pchar(L); end;


بالتوفيق، وشكرا
الرد
#2
السلام عليكم ورحمة الله

بعد تجريب كل الإحتمالات - الحمد لله - توصلت إلى مايلي :

كود :
function withowtTachkil(Const Text : PAnsiChar) : PAnsiChar; cdecl; var c: Char; S : string; AText ,R: AnsiString; i,j : Integer; begin AText := AnsiString(Text); S := UTF8ToWideString(A); for C := #$064B to #$0652 do //الحركات begin S:= StringReplace(S,C,'',[rfReplaceAll]); end; R := UTF8Encode(S); Result := PAnsiChar(R); end;

على ما يبدو، FireBird يرسل القيم النصية بترميز UTF8، لذلك يجب تحويلها إلى Unicode لتستطيع التعامل معها

من له شرح أوضح اهذه القضية فليتفضل

بالتوفيق وشكرا
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم