# Native Code > برنامه نویسی در Delphi >  تبدیل کد اسکی 137 به 136 برای حرف "ی"

## M.Ehsanifar

سلام دوستان

من همه مطالب سایت در مورد مشکلات حروف فارسی به دلیل تفاوت در ویندوز ها رو خوندم وطبق گفته های شما کاراکتر ها با کد اسکی 152 رو به 223 و 137 رو به 136 تبدیل کردم ولی مشکل اینجاست که در تبدیل حرف ی از کد 137 به 136 این حرف به صورت جدا (ی آخر) در میان کلمه نمایش داده می شه . فایل rar تصویر کلمه "لبنیات" بعد از تبدیل رو هم ضمیمه کردم .
ضمنا پایگاه داده بوسیله Access یا SQL فرقی نداره . باز همین طوری می شه .
در تمام اسکی ها هیچ حرف "ی" دیگری وجود نداره 160 ، 156 ، 236 و 237 که هیچ کدوم جواب نمیدن .

این هم کد تبدیل :

var
S:string;  i:integer;
begin
S:=Table1.field[0].value;
for i:=1 to length(s) do
begin
if ord(s[i]=237 then
S[i]:=chr(236);
end;
Table1.edit;
Table1.Field[0].value:=s;
Table1.post;
end;
لطفا منو راهنمایی کنید ... متشکرم

----------


## SYNDROME

دوست عزیز کدها را به شکل زیر تبدیل کن.

    IF Key = #152 Then Key := #223;
    IF Key = #236 Then Key := #237;

یکی برای "ی" و دیگری برای "ک" است.
152 را به 223.
236 را به 237.
تبدیل کنید.
موفق باشید

----------


## dkhatibi

در شکل ظاهری تفاوت ایجاد شده و گرنه پستهای 1 و 2 سک چیز می گن؟
سیندروم جان فرق اینا در چیه؟

----------


## Valadi

جناب M.Ehsanifar
شما چرا از یونیکد استفاده نمی کنی که این مشکلات نباشه 
کلمه یونیکد در سایت سرچ کن 
ضمنا کامپونت رایگان و هم مقاله در این زمینه در سایت هست

----------


## SYNDROME

> if ord(s[i]=237 then
> S[i]:=chr(236);;





> 236 را به 237.





> در شکل ظاهری تفاوت ایجاد شده و گرنه پستهای 1 و 2 سک چیز می گن؟
> سیندروم جان فرق اینا در چیه؟


دوستمان 237 را به 236 و من 236 را به 237 تبدیل کردم تا مشکل حل شود.
موفق باشید

----------


## M.Ehsanifar

خیلی از راهنمایی هاتون ممنونم ولی متون در access به صورت Unicode ذخیره می شن واین کدی که من نوشتم داخل جدولی که در Access نگهداری می شه عمل می کنه و با تغییر کد اسکی 237 به 236 باید کلمه درست نشون داده بشه ولی اینطور نیست .

من کد تبدیل حرف "ک" رو حذف کردم . (150 به 223)

در ضمن من مقاله استاندارد سازی (unicode) رو خوندم ولی هنوز نمی دونم باید چکار کنم . 
منظورم روی نوشته های داخل بانک اطلاعاتی و تعمیر اونهاست . 

من از دلفی 7 استفاده می کنم و وقتی می خوام TNTUnicode رو نصب کنم پیغامی می ده که باید این فایل ها به روز بشن . البته روش نصب کامپوننت رو خوب نمی دونم . اگه ممکنه در این مورد هم منو راهنماییی کنید... متشکرم

----------


## M.Ehsanifar

TNTUnicode رو نصب کردم (داخل سایت طریقه نصبش رو پیدا کردم) و بعد وقتی داخل TNTEdit نوشتم "لبنیات" باز هم حرف"ی" به صورت "ی" آخر نوشته می شه .
در ضمن همه نوشته ها راجع به unicode رو خوندم . هر جا که صحبت ازمشکل فارسی بود همه می گفتن unicode
، می پرسیدن با چی ، میگفتن TNTUnicode . بعد میگفتن ما از دلفی 7 استفاده می کنیم ، همه می گفتن دلفی 7 با یونی کد سازگار نیست . از همه مهمتر ADO از wideString پشتیبانی نمی کنه .
من که پاک گیج شدم . 
در کل همه جوابها یک جور پاس کاری بودن . و در آخر فکر کنم راه حل فقط .net باشه . نظر شما دوستان چیه ؟

----------


## ebnsina

> TNTUnicode رو نصب کردم (داخل سایت طریقه نصبش رو پیدا کردم) و بعد وقتی داخل TNTEdit نوشتم "لبنیات" باز هم حرف"ی" به صورت "ی" آخر نوشته می شه .
> در ضمن همه نوشته ها راجع به unicode رو خوندم . هر جا که صحبت ازمشکل فارسی بود همه می گفتن unicode
> ، می پرسیدن با چی ، میگفتن TNTUnicode . بعد میگفتن ما از دلفی 7 استفاده می کنیم ، همه می گفتن دلفی 7 با یونی کد سازگار نیست . از همه مهمتر ADO از wideString پشتیبانی نمی کنه .
> من که پاک گیج شدم . 
> در کل همه جوابها یک جور پاس کاری بودن . و در آخر فکر کنم راه حل فقط .net باشه . نظر شما دوستان چیه ؟


دوست عزیز ما چند ساله که با دلفی 7 برنامه می نویسیم و در جاهایی هم که لازم شده از کامپوننت TNT استفاده کردیم و مشکل شما رو هم نداشتیم.

همه این موارد نشون میده که مشکل از سیستم عامل شما یا مورد دیگه ای از برنامه های شماست.
بهتره مراحل اینکار رو یکی یکی با نصب صحیح TNT و بعد استفاده اون در یک بانک مثالی پیگیری کنید و درصورتی که در این پروژه مثالی باز هم همین مشکل را داشتید متن پروژه مثالی را بگذارید تا دوستان دانلود کرده و مشکل را ببینند و بلکه حل هم بشود.

ضمناً درست است که ADO در دلفی 7 از WideString  در بانکهای Access پشتیبانی نمی کند، اما وقتی رشته ای فارسی را در آن ذخیره و بازیابی می کنیم مشکلی ندارد !

----------


## ebnsina

ضمنا یک مورد جا افتاده هم یادم اومد :

هر چند من در مورد صحت این مورد یقین ندارم، اما همیشه پس از نصب ویندوزم DLL مربوط به کی بورد فارسی رو با DLL مورد نظر خودم Replace میکنم تا جای نوشتن حروف "پ" و "ژ" درست بشن.

همین کار رو برای سیستم مشتری ها میکنم. لذا شاید مشکل اساساً از همین باشه که شاید این DLL در واقع حرف "ی" درستی رو برمیگردونه و ....

از دوستانی که در این مورد اطلاع دقیقتری دارند تقاضا دارم راهنمایی کنند تا ما هم چیزی یاد بگیریم.

----------


## SYNDROME

> هر چند من در مورد صحت این مورد یقین ندارم، اما همیشه پس از نصب ویندوزم DLL مربوط به کی بورد فارسی رو با DLL مورد نظر خودم Replace میکنم تا جای نوشتن حروف "پ" و "ژ" درست بشن.
> همین کار رو برای سیستم مشتری ها میکنم. لذا شاید مشکل اساساً از همین باشه که شاید این DLL در واقع حرف "ی" درستی رو برمیگردونه و ....


دوست عزیز روش شما روش خوبی است ولی بزرگترین عیب آن این است که شاید نرم افزار دیگری روی سیستم مشتری وجود داشته باشد که اگر فایل DLL را عوض کنید برنامه دیگر کار نکند و با کد آن DLL سازگار باشد.
پس بهتر است در داخل برنامه خودتان کد مورد نظر را اصلاح کنید تا در نصب بر روی سیستم ها دوچار مشکل نشود.
موفق باشید

----------


## dkhatibi

کد ک  تبدیل شده ی جدید از نوع فارسی است؟ یا فقط مشکل را حل می کنه؟
در مرتب شازی با OrderBy مشکلی وجود ندراه اما در مرتب سازیهای دستی با الگوریتم خودم با جستجوی ک ی قبلی مشکل بر می خورم در ابتدا ظاهر می شه! چرا؟

----------

