کدهای را به شکل زیر اصلاح کنید.
IF Key = #152 Then Key := #223;
IF Key = #236 Then Key := #237;
موفق باشید
Printable View
حالا این جا یه بحث پیش میاد .
فرض کنید شما یه برنامه ورود اطلاعات به کاربر دادید .
حالا اگه کاربر اطلاعات رو از یه جا مثل یه صفحه اینترنتی کپی و Paste کنه .
آیا این روش جواب میده ؟
سلام و تشكر از همه دوستان
من چطور فيلد Title بانكم كه با "ك" , "ي" بزرگ و كوچك ايراددار Import شده به "ك" , "ي" بزرگ و كوچك درست تبديل كنم؟
سلام
یکی از کاربران قطعه کد زیر رو ارسال کردن. من نمیتونم از این کد استفاده کنم، لطفا کمک کنید.
unit Unit_FarsiFixer;
interface
uses
Forms,
Controls,
SysUtils,
Dialogs,
Classes;
type
TFarsiKeyboardHook = class(TComponent)
private
parentKeyPress: TKeyPressEvent;
procedure myKeyPress(Sender: TObject; var Key: Char);
protected
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Barnamenevis.org', [TFarsiKeyboardHook]);
end;
{ TFarsiKeyboardHook }
constructor TFarsiKeyboardHook.Create(AOwner: TComponent);
begin
inherited;
IF AOwner is TForm then
begin
parentKeyPress := TForm(Owner).OnKeyPress;
TForm(Owner).OnKeyPress := myKeyPress;
TForm(Owner).KeyPreview := true;
end;
end;
procedure TFarsiKeyboardHook.myKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #223 then Key := #152;
if Key = #236 then Key := #237;
if Assigned(parentKeyPress) then
parentKeyPress(Sender, Key);
end;
end.
باسلام
فایل kbdfa.dll ضميمه را در شاخه های زیر به ترتیب کپی کنید و سپس پیغامی که ظاهر می شود را cancel کنید
c:\windows\system32\dllcache
c:\windows\system32
سپس سیتم رو reset کنید مشکلتون حل می شه.
یک مشکلی دارم در این رابطه
فایلهایی دارم که با حرف ی ساخته شده اند
با استفاده از سورس زیر لیست فایلها و ساب فولدرها را میگیرم ولی فولدرها یا فایلهایی که حرف ی معمولی توش بکار رفته را تشخیص نمیده ، ولی" ي " اصطلاحا ی نقطه دار( shift +X) را بی مشکل تشخیص میده
چه پیشنهادی میدین؟ ( دلفی آخرش ورژن موجود هم 7 دارم :) به نظرتون چه کنم که مشکل بشه ؟
http://www.festra.com/eng/snip04.htm
با سلام
منم همچین مشکلی روبرو بودم. در مورد md5 کردن فایلهایی با این حروف. دسته آخر مجبور به اسباب کشی به دلفی 2009 به بعد شدم.
موفق باشی.
با سلام به همه دوستان
همه روشهایی که فرمودین خوبه و اون اولی هم به نظر من راحتتره ولی منم یه راهی بهتون میگم انشاء اله بدردتون بخوره :
این راه تمام مشکلاتی که برا قبلیا نقل شد رو نداره ، ببینید :
یه یونیت با این کدها درست کنید :
unit CorrectFar;
interface
uses
Windows, Messages, Dialogs,SysUtils, Variants, Classes;
const
c_CharCount=2;
type
TCharArray = array[1..c_CharCount]of Char;
var
S1: TCharArray=('ی' , 'ک');
S2: TCharArray=('ي' , 'ک');
function CF(txtIn :String):String;
implementation
function CharInTable(ch :Char):Byte;
var i :Byte;
begin
Result:= 0;
for i := 1 to c_CharCount do
if S1[i]=ch then begin
Result:= i;
Exit;
end;
end;
function CF(txtIn :String):String;
var i, r :integer;
begin
for i:= 1 to length(txtIn) do
begin
r:= CharInTable(txtIn[i]);
if r>0 then
txtIn[i]:= S2[r];
end;
end;
end.
حالا هر جا میخواید کلمه ای رو اصلاح کنید اول یونیت رو اعلام کنید :
Uses CorrectFar;
بعد بجای همچین خطی :
db1:= Edit1.Text;
یه همچین خطی بنویسید :
db1:= CF(Edit1.Text);
یا اینجوری بنویسید :
Edit1.Text:= CF(Edit1.Text);
این روش این مزیتها رو داره :
- فقط یک بار یک متن داخل یک شیء تبدیل میشه اونم هنگام کاربرد .
- اگر کاربر متن رو از جای دیگه آورده باشه اصلاح میشه .
- ساده هست .
- امکان تغییر رو به دلخواه داره .
- امکان اضافه کردن امکانات بیشتر رو داره .
- به هر شیء ، متن و یا هر چیز دیگه قابل تعمیمه .
- هر تعداد کاراکتر رو که میخواید عوضشون کنید می تونید بدون دستکاری تو کد اضافه کنید .
- و ...
موفق و سربلند باشید .
چرا از تابع StringReplace استفاده نمي كنيد؟:متفکر:
چرا از تابع StringReplace
و يا
function ReplaceChar(s:string;c:char;charrep:char):string;
begin
while pos(c,s)>0 do
s[pos(c,s)]:=charrep;
ReplaceChar:=s;
end;
استفاده نمي كنيد؟:متفکر:
سلام
اونم یه راهشه
از اونم می تونید استفاده کنید . ولی نه این راهی که رفتین . راه حل بهتری هم داره .