05-02-2010, 04:19 PM
أولا نستعمل [COLOR="Red"]BlockRead أسرع من Read
و كل ما كانت سعة خطوة القراءة كبير كل ما كانت القراءة أسرع مثال :[/COLOR]
الأن كيف نجلب أقرب كلمة مشابهة للتي في القاموس :
كما تلاحظ ... [COLOR="Red"]يبقى فقط تبديل الكلمة المشابهة بالمعطوبة دون إستخدام Random و عليه
ستكون النتيجة أسرع و أضمن !!! .
لكن :
ماذا لو كانت عندنا أكثر من كلمة مشابهة ؟؟ أيضا لا تنسى تأثير MinChar / MaxChar .[/COLOR]
و كل ما كانت سعة خطوة القراءة كبير كل ما كانت القراءة أسرع مثال :[/COLOR]
PHP كود :
Function IsMyWordHere(MyWord:String):Boolean;
Var
MyFile: File Of Int64;
Temp: String;
NbR: Dword;
Begin
Result:= False;
{$I-}
AssignFile(MyFile,'MyList.txt');
ReSet(MyFile);
Seek(MyFile,0);
If IoResult <> 0 Then
Begin
CloseFile(MyFile);
Exit;
End;
While Not EoF(MyFile) Do
Begin
SetLength(Temp,FileSize(MyFile));
BlockRead(MyFile,Temp[1],FileSize(MyFile),NbR);
If (IoResult <> 0) Or (NbR <> FileSize(MyFile)) Then
Begin
CloseFile(MyFile);
Exit;
End;
If AnsiPos (MyWord,Temp) <> 0 Then
Result:= True Else
Result:= False;
End;
CloseFile(MyFile);
{$I+}
End;
الأن كيف نجلب أقرب كلمة مشابهة للتي في القاموس :
PHP كود :
Function GetRndWord (BadWord:String):String;
Var
_Index,i: Word;
MyFile : TextFile;
Temp : String;
MyListArr: Array [0..100] Of String;
begin
Result:= '';i:= 0;
If IsMyWordHere(BadWord) Then
Begin
MessageBox(0,'Word Exsist !',Nil,0);
Exit;
End;
AssignFile(MyFile,'MyList.txt');
Reset(MyFile);
While Not Eof(MyFile) do
begin
Readln(MyFile,Temp);
MyListArr[i]:= Temp;
Inc(i);
End;
CloseFile(MyFile);
i:= 0;_Index := 1;
While (_Index <= Length(BadWord)) And (i <= 100)Do
Begin
If Pos(BadWord[_Index],MyListArr[i]) <= 0 Then
Inc(i) Else Inc(_Index);
If Length(BadWord) = Length(MyListArr[i]) Then
Result:= MyListArr[i] Else
Result:= '';
End;
End;
كما تلاحظ ... [COLOR="Red"]يبقى فقط تبديل الكلمة المشابهة بالمعطوبة دون إستخدام Random و عليه
ستكون النتيجة أسرع و أضمن !!! .
لكن :
ماذا لو كانت عندنا أكثر من كلمة مشابهة ؟؟ أيضا لا تنسى تأثير MinChar / MaxChar .[/COLOR]
