PDA

View Full Version : مشکل در تبدیل MemoryStream به WideString



Dark_Knight
جمعه 13 شهریور 1388, 18:28 عصر
سلام
در قسمتی از برنامه نیاز دارم محتویات یک MemoryStream که یک فایل با انکودینگ UTF8 هست رو به WideString تبدیل کنم تا پردازشهای بعدی رو انجام بدم. من از کد زیر استفاده می کنم که بعضی مواقع این تبدیل دو درست انجام میده و در بعضی مواقع دیگر یک رشته خالی برمیگردونه:


function StreamToWideString(AStream: TStream): WideString;
Var
s: UTF8String;
l: integer;
begin
AStream.Position:= 0;
setlength(s, AStream.size);
l:= AStream.Size *2;
SetLength(Result, l);
AStream.Read(s[1], AStream.Size);
Result := UTF8Decode(s);
end;

به نظر میرسه تابع UTF8Decode در مواقعی درست عمل نمیکنه. اگه ممکنه راهنمایی کنید.

vcldeveloper
شنبه 14 شهریور 1388, 02:45 صبح
از چه نسخه ایی از دلفی استفاده کردید؟

Dark_Knight
شنبه 14 شهریور 1388, 04:09 صبح
من با دلفی 7 کار میکنم و فعلا امکان استفاده از نسخه های بالاتر ندارم.برنامه با استفاده از کامپوننتهای indy 9 به یک سایت ایرانی کانکشن میزنه و در خوندن پاسخ مخصوصا وقتی IOHandler روی SSL تنظیم شده باشه این مشکل وجود داره.

Dark_Knight
شنبه 14 شهریور 1388, 14:04 عصر
خوب مشکل من با استفاده از کامپوننتهای JCL و جایگزینی تابع UTF8ToWideString به جای UTF8Decode در کد بالا حل شد.