delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف استبدل حروف الكلمات بارقام من ملف نصي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
s.fateh كتب :الفكرة ان نقوم بانشاء جدول يحتوي على الحرف و ما يقابله من كلمة/ رقم نريد تشفيره

s.fateh
شكرا جزيلا ولو انها متأخره كثيرا
واجهتنى مشكله فى تجميع الكود هل من الممكن تحويل الكود الى سورس
ولكم تحياتى
السلام عليكم
تحتاج الى مكونين Memo ;
تحتاج الى مكون Button1
تحتاج الى ملف نسيc:\Data.txt تضع فيه قاموس الكلمات الخاص بك و هاهي الوحدة
PHP كود :
unit Unit1;

interface

uses
  Winapi
.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TCrypt 
= record
    Alpha
: string;
    
Crypt: string;
  
end;

type
  TForm1 
= class(TForm)
    
Button1: TButton;
    
Memo1: TMemo;
    
Memo2: TMemo;
    
procedure Button1Click(Sender: TObject);
  private
    
CryptTable: array of TCrypt;
    
procedure CreateCryptTable;
    
procedure ReplaceStr(var Str: string);
  public
    { Public 
declarations }
  
end;

var
  
Form1: TForm1;

implementation

{$R *.dfm}

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;

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;

end. 
بالنسبة لهذه المشكلة
إقتباس :لا يزال الوصف ناقص
فانت تقول يتم استبدال الحروف بارقام من 1 الى 24
فان كان لديك هذا 1221 فكيف تعرف
هل هو 2 22 1
ام هو 21 12
ام هو 1 2 2 1
والسلام عليكم ورحمة الله

الحل بسيط جدا يكفي ان نعرف اكبر رقم كم يمثل بالخانات فاذا كان يمثل بالعشرات فالاراقام الاولى تكون كالتالي
01
02
03
اما اذا كان خاناته في 100
فسيكون 001
002
003
وهكذا
بالتوفيق
s.fateh كتب :تحتاج الى مكونين memo ;
أولا شكرا لك وجزاك الله خيرا

ولكن جربت الكود ولم يظبط معى
الميمو الاول سأكتب فيه الحروف العربيه كأى اسم مثلا سيظهر لى فى الميمو الثانى ما يقابل هذه الحروف العربيه بما يقابلها من رموز الهيكس
وايضا لو كتبت رموز هيكس فى الميمو الاول سيظهر لى ما يقابلها بالحروف العربيه فى الميمو الثانى
وشكرا جزيلا
الصفحات : 1 2