PDA

View Full Version : سوال: مشکل فارسی در Delphi XE2



sara66
سه شنبه 12 اردیبهشت 1391, 09:33 صبح
سلام ، من Delphi XE2 نصب دارم ، توی برنامه از فونت Tahoma استفاده کردم و متن های Label ها و تمامی کامپوننت های برنامه فارسی هستن .
خروجی EXE برنامه را روی سیستمی که تازه ویندوز نصب شده و تنظیماتی توی Control Panel برای زبان فارسی انجام نشده ، اجرا می کنم اما نوشته ها به هم میریزه ! علامت سوال نمیزنه ، اما مثلا کلمه سلام را اینجوری می نویسه "م الس" ، خلاصه بهم ریخته نشون میده !

چکار کنم ؟ پس این جریان یونیکد که میگن توی این نسخه از دلفی پشتیبانی میشه چیه ؟!!!
مرسی

zidane
سه شنبه 12 اردیبهشت 1391, 13:48 عصر
از چه ويندوزي استفاده مي كنيد؟
در هر صورت بايد در كنترل پنل، تنظيمات مربوط به unicode رو براي زبان فارسي تنظيم كنيد

sara66
سه شنبه 12 اردیبهشت 1391, 17:21 عصر
از تمام نسخه های ویندوز ، XP به بالا ، حتی سرور ...
خوب نمیشه اون کار را نرم افزار انجام بده ؟

سعید صابری
سه شنبه 12 اردیبهشت 1391, 17:36 عصر
چرا. یک سورس برای تغییر این تنظیمات در سایت موجود بوده است.

sara66
سه شنبه 12 اردیبهشت 1391, 17:57 عصر
سرچ کردم ، یک سری کد هم پیدا کردم اما مثل اینکه فقط روی XP کار می کنه !

zidane
سه شنبه 12 اردیبهشت 1391, 19:34 عصر
چون از يونيكد پشتيباني مي كنه حروف فارسي رو درست نشون مي ده و بصورت علامت سوال نيستند. ولي براي نمايش راست به چپ بايد فايل مورد نياز در ويندوز نصب شده باشند (در قسمت Regional and rlanguage options) كه ظاهرا در حال حاضر تنها راهش همون سورسي هست كه ديديد

BORHAN TEC
چهارشنبه 13 اردیبهشت 1391, 10:02 صبح
حل این مشکل به این راحتی ها نیست، تنها کاری که شما می توانید انجام بدهید مدیریت کردن این مسئله است. منظورم اینه که قبل از اجرای برنامه ببینید که زبان فارسی روی سیستم نصب هست یا خیر و در صورتی که نصب نبود این مسئله را به اطلاع کاربر برسانید. توجه داشته باشید که در این مورد فقط برنامه هاییی که با QT نوشته شده اند می توانند کلمات را به شکل درست نشان دهند و تمام برنامه هایی که با دلفی و یا زبان های دات نتی و ... ساخته شده اند این مشکل را دارند و من هم سعی می کنم به زودی این مورد را به QC گزارش کنم.
در هر حال برای مدیریت این مسئله من یک کد کوچک را آماده کرده ام که می توانید از آن استفاده کنید:
program Project1;

uses
Forms,
Windows,
SysUtils,
Unit1 in 'Unit1.pas' { Form1 } ,
Unit2 in 'Unit2.pas' { Form2 } ;
{$R *.res}

function IsInstalledFarsi: Boolean;
var
Lang: Cardinal;
begin
Lang := GetKeyboardLayout(0);
LoadKeyboardLayout('00000429', 1);

if GetKeyboardLayout(0) = $4290429 then
Result := True
else
Result := False;

LoadKeyboardLayout(FloatToStr(Lang), 1);
end;

begin
Application.Initialize;

if IsInstalledFarsi then
begin
Application.MainFormOnTaskBar := True;
Application.CreateForm(TForm1, Form1);
end
else
begin
Application.CreateForm(TForm2, Form2);
end;

Application.MainFormOnTaskBar := True;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;

end.

توجه داشته باشید که در اینجا می توانید در Form2 یک عکس قرار دهید که در اون نوشته شده باشه که "لطفاً زبان فارسی را بر روی سیستم خود نصب کنید".
موفق باشید...

BORHAN TEC
چهارشنبه 13 اردیبهشت 1391, 12:58 عصر
در مورد پست قبل باید بگویم که این اشکال بیشتر مربوط به ذات سیستم عامل ویندوز است و نه دلفی. در هر صورت این مشکل در ویندوز ویستا و سون و کلاً نسخه های جدید سیستم عامل ویندوز برطرف شده اند.


چکار کنم ؟ پس این جریان یونیکد که میگن توی این نسخه از دلفی پشتیبانی میشه چیه ؟!!!این جریان(مسئله یونیکد) که از دلفی 2009 اضافه شده الکی نیست و واقعاً هم تیم توسعه دلفی کار بسیار بزرگی را انجام داده اند، شاید بسیاری از ضعف ها که در نسخه های جدید دلفی برطرف شده اند همگی به خاطر اضافه شدن قابلیت یونیکد باشد که شما به سادگی و بدون هیچ گونه توجهی از کنار آن عبور می کنید. به عنوان یک مثال بسیار ساده یک سوال دارم و آن هم این است که در نسخه های قدیمی دلفی شما چگونه می توانستید یک فایل متنی ساده را ایجاد کنید که در آن بتوان یک عبارت فارسی را به شکل یونیکد در آن ذخیره کرد؟ برای انجام این کار در نسخه های قدیمی تر دلفی شما ملزم به استفاده از کامپوننتهای TNT بودید که در بسیاری از حالات باز هم نمی توانست نیاز برنامه نویسان را به خوبی حل کند ولی حالا انجام این کار در نسخه های جدید دلفی آنقدر عادی شده که شاید حتی برنامه نویسان به آن هم توجه نکنند.:چشمک:
البته مثالهایی از این دست بسیار زیاد است مثل برنامه های تحت شبکه، بانکهای اطلاعاتی و ده ها مورد دیگر که هر کدام در مبحث یونیکد جای بحث و تفکر دارند. :متفکر: