الفريق العربي للبرمجةأرشيف المنتديات · 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 واللغة العربية منصبة عليه، ومع ذلك ظهرت المشكلة.

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

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

عدد الزوار حالياً

المتواجدون خلال آخر ساعة · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…