17-07-2012, 02:51 PM
السلام عليكم
الفكرة ان نقوم بانشاء جدول يحتوي على الحرف و ما يقابله من كلمة/ رقم نريد تشفيره
نقوم بتعريف record يحتوي على حقلين الحرف/ الكلمة و الحرف الكلمة التي سنستبدلها..
بعدها نقوم بانشاء مصفوفة غير محددة الابعاد من السجل array of record و بالتالي يكون لدينا جدول التشفير الخاص بنا array تكون غير محدودة الابعاد نحدد ابعادها اثناء زمن التشغيل ...
صورة توضيحية
الآن كل ما علينا القيام به هو ملئ الجدول الخاص بنا من الملف النصي
ملاحظة مهمة الكود للتوضيح و هناك طرق افضل المهم ان تصل الفكرة....
البحث و الاستبدال و اككر هناك طرق افضل والكود غير مرتب كما ينبغي لكن شغال 100/100
S.FATEH
الفكرة ان نقوم بانشاء جدول يحتوي على الحرف و ما يقابله من كلمة/ رقم نريد تشفيره
نقوم بتعريف record يحتوي على حقلين الحرف/ الكلمة و الحرف الكلمة التي سنستبدلها..
كود :
TCrypt = record
Alpha: string;
Crypt: string;
end;بعدها نقوم بانشاء مصفوفة غير محددة الابعاد من السجل array of record و بالتالي يكون لدينا جدول التشفير الخاص بنا array تكون غير محدودة الابعاد نحدد ابعادها اثناء زمن التشغيل ...
كود :
private
CryptTable: array of TCrypt;كود :
http://imgur.com/RYZsmالآن كل ما علينا القيام به هو ملئ الجدول الخاص بنا من الملف النصي
ملاحظة مهمة الكود للتوضيح و هناك طرق افضل المهم ان تصل الفكرة....
كود :
procedure TForm1.CreateCryptTable;
var
StringList: TStringList;
I: Integer;
begin
StringList := TStringList.Create;
try
StringList.LoadFromFile('c:\Data.txt');
SetLength(CryptTable, StringList.Count);
for I := 0 to StringList.Count -1 do
begin
CryptTable[i].Alpha := Copy(StringList[i], 1, Pos(' ', StringList[i]) - 1);
CryptTable[i].Crypt := Copy(StringList[i], Pos(' ', StringList[i]) + 1, Length(StringList[i]));
end;
finally
StringList.Free;
end;
end;البحث و الاستبدال و اككر هناك طرق افضل والكود غير مرتب كما ينبغي لكن شغال 100/100
كود :
procedure TForm1.Button1Click(Sender: TObject);
var
StringList: TStringList;
i: Integer;
TmpStr: string;
begin
CreateCryptTable;
StringList := TStringList.Create;
try
StringList.Assign(Memo1.Lines);
for I := 0 to StringList.Count - 1 do
begin
TmpStr := StringList[i];
ReplaceStr(TmpStr);
StringList[i] := TmpStr;
Memo2.Lines.Add(StringList[i]);
end;
finally
StringList.Free;
end;
end;
procedure TForm1.ReplaceStr(var Str: string);
var
i: Integer;
x: Integer;
begin
for I := Length(Str) downto 1 do
begin
for x := 0 to Length(CryptTable) - 1 do
begin
if Str[I] = CryptTable[x].Alpha then
Str := StringReplace(Str, Str[i], CryptTable[x].Crypt, []);
end;
end;
end;S.FATEH
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج

