![]() |
|
دالة لحذف التشكيل تعمل في الدلفي ولا تعمل في Firebird - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : دالة لحذف التشكيل تعمل في الدلفي ولا تعمل في Firebird (/showthread.php?tid=2201) |
دالة لحذف التشكيل تعمل في الدلفي ولا تعمل في Firebird - bahmani - 18-07-2010 السلام عليكم ورحمة الله إخواني الكرام، أردت برمجة دالة خارجية لـ 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;بالتوفيق، وشكرا دالة لحذف التشكيل تعمل في الدلفي ولا تعمل في Firebird - bahmani - 21-07-2010 السلام عليكم ورحمة الله بعد تجريب كل الإحتمالات - الحمد لله - توصلت إلى مايلي : كود : 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 لتستطيع التعامل معها من له شرح أوضح اهذه القضية فليتفضل بالتوفيق وشكرا |