PDA

View Full Version : مشکل با حروف ی ک



sma_mohseni
پنج شنبه 04 اسفند 1384, 09:29 صبح
سلام
در برنامه ای که با دلفی و اسکیوال سرور نوشته ام وقتی کاربر کلماتی را که داخل آنها حروف ی و ک میباشد را وارد میکند برنامه قبول میکند (اینسرت میکند) اما بعد از آن وقتی میخواهم آنرا ویرایش کنم و یا حتی درون Dbgrid بالا و پایین بروم ، پیغام خطا میدهد. البته این مشکل در همه ویندوز ها بروز نمیکند و در برخی از ویندوزها (احتمالا آنهایی که سرویس پک 2 را ندارند) وجود دارد.
لطفا مرا راهنمایی کنید
با تشکر

javad_hosseiny
پنج شنبه 04 اسفند 1384, 10:44 صبح
مشکل تفاوت در برخی حروف فارسی (حرف ی و ک ) بین ویندوزهای سرویس پک 1 و 2 موجود است و با توجه به اینکه ممکن است کاربرانی با سیستم های مختلف (ویندوزهای متفاوت) اطلاعات به برنامه وارد کرده و یا جستجو کنند پیشنهاد می کنم حتما قبل از ورود اطلاعات به جداول (و یا قبل از شروع عملیات جستجو) عبارت موردنظر را نسبت به این دو کاراکتر تغییر دهید
جهت تغییر کاراکتر کد 236 را به 237
و کاراکتر کد 152 را به 223 تغییر دهید
(ChartarTrance کنید)
مثل:

CHRT(_var_,CHR(236)+CHR(152),CHR(237)+CHR(223))
و محتوی تابع CHRT


Function CHRT;
VAR T1,T2,T3 : BYTE;
I,J : INTEGER;
TMP : STRING;
BEGIN
tmp := '';
T1 := Length(s1);
T2 := Length(s2);
T3 := Length(s3);
IF T2 > T3 THEN S3 := S3 + SPACE(t2 - t3)
ELSE IF T3 > T2 THEN S2 := S2 + SPACE(T3 - T2);
T2 := Length(s2);
T3 := Length(s3);
IF (T1 = 0) OR (T2 <> T3) THEN
BEGIN
CHRT := '';
Exit;
END;
FOR I:= 1 TO T1 DO
BEGIN
J := findc(S2, S1[i]);
IF J <> 0 THEN TMP := TMP + S3[J]
ELSE TMP := TMP + S1[i];
END;
CHRT := TMP;
END;;
,و البته بعضی از دوستان نیز فایل های مربوط به صفحه کلیدهایی (KBDFA.DLL) را که دارای چنین تصحیحاتی هست نیز ارائه کرده اند ولی متاسفانه هر دو حرف تصحیح نشده است ولی از این طریق نیز می توان این مشکل را حل کرد (که جای حروف تایپی در صفحه کلید تغییر پیدا کند)