نوشته شده توسط
علامت سوال
این در حالیه که نوع Lines در هر دو کنترل TStrings هست
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
دقیقا نکته همینجاست ! اگر دقت کنی RichEdit در تب Windows هست ، یعنی ماله VCL دلفی نیست یکی از کامپونتهای ویندوزه ، پس از ویندوز 2000 به بعد یونیکد ساپورت هست ، اما وقتی دلفی مقدارش رو از ویندوز میگیره تبدیلش میکنه به استرینگ 1 بایتی.
این نکته ای بود که من هم بهش دقت نکرده بودم ....
پس :
نوشته شده توسط
farnaz2003
[COLOR=black]
سوال: آیا تابعی وجود دارد که خروجی RichEdit1.lines.Strings[1] را به Widestring تبدیل کند؟
با تشکر
ببین با این تابع باید بتونی مقادیر رو مستقیما از ویندوز بگیری (بدون دخالت دلفی) ولی بعدش دوباره توی دلفی هر کاری باهاش بکنی میشه String ها :
function TForm1.RicheditWideLine(ARichEdit: TRichEdit; ALine: Integer ): WideString;
var
ALineIndex, ALineLength, I: Integer;
AHandle: HWND;
begin
Result := '';
AHandle := ARichEdit.Handle;
ALineIndex := SendMessageW(AHandle, EM_LINEINDEX, ALine, 0);
if ALineIndex >= 0 then
begin
ALineLength := SendMessageW(AHandle, EM_LINELENGTH, ALineIndex, 0);
if ALineLength > 0 then
begin
SetLength(Result, ALineLength);
Result[1] := Widechar(ALineLength);
I:= SendMessageW(AHandle, EM_GETLINE, ALine, LPARAM(PWideChar(Result)));
if I < ALineLength then
SetLength(Result, I);
end;
end;
end;
این کد یک خط رو میگیره دیگه ، میتونی یک لوپ بزنی همه خطهارو بگیری...