الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

النص العربي و Clipboard.AsText

مغلق
بدأه بعبع في 10 أغسطس 2006 · 3 رد · 520 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

عندما استخدم Clipboard.AsText لوضع نص عربي في الحافظة فإنه لا يظهر بشكل سليم عند عملية اللصق.

فما هو السبب؟

وشكراً لكم.

#2

لو راجعت Delphi Help ستلاحظ ان Clipboard.AsText سواء أثناء القراءة أو الكتابة تستعمل AnsiString وهنا ستحدث المشكلة ..

جرب إستعمالClipboard Win32 API function وعندما تستدعي التابع SetClipboardData استخدم CF_UNICODETEXT

ربما كود كهذا قد يفيد

procedure SetClip(handle:Thandle;unicodestring:widestring);
VAR
	DataHandle :  THandle;
	FromPointer:  Pointer;
	ToPointer  :  Pointer;
	ws  :  WideString;
begin
  ws := UnicodeString;
  SetLength(ws, Length(ws)+1);
  ws[Length(ws)] := WideChar($0000);  // Null-terminator

  DataHandle := GlobalAlloc(GMEM_DDESHARE OR GMEM_MOVEABLE,
							Length(ws)*SizeOf(WChar));

  ToPointer   := GlobalLock(DataHandle);
  FromPointer := @UnicodeString[1];
  Move(FromPointer^, ToPointer^, Length(ws)*SizeOf(WChar));
  GlobalUnlock(DataHandle);

  OpenClipboard(Handle);
  EmptyClipboard;
  SetClipboardData(CF_UNICODETEXT, DataHandle);
  CloseClipboard;
end;

هو مأخوذ من المثال في : http://www.efg2.com/Lab/OtherProjects/Unicode.htm

لاحظ كود الدلفي

procedure TClipboard.SetAsText(const Value: string);
begin
  SetBuffer(CF_TEXT, PChar(Value)^, Length(Value) + 1);
end;

function TClipboard.GetAsText: string;
var
  Data: THandle;
begin
  Open;
  Data := GetClipboardData(CF_TEXT);
  try
	if Data <> 0 then
	  Result := PChar(GlobalLock(Data))
	else
	  Result := '';
  finally
	if Data <> 0 then GlobalUnlock(Data);
	Close;
  end;
end;

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#3

انا جربتها من قبل فهي تعمل على جهازي

يمكن لان جهازي يدعم العربي و بالتالي تعمل بشكل صحيح

اما اذا كان الجهاز لا يدعم العربي فتحصل المشكلة التي تحدث عنها الاخ

شكرا اخ cipher على هذه المعلومات القيمة في التعامل مع اللغة بالشكل الصحيح و السليم

وذلك بغض النظر عن دعم نظام التشغيل للغة العربية او عدم دعمه

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#4

أشكرك كثيراً أستاذ cipher

تم حل المشكلة

أخي وائل

جهازي XP واللغة العربية منصبة عليه، ومع ذلك ظهرت المشكلة.

هذا الموضوع مغلق.

مواضيع مشابهة