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

نسخة كاملة : تقسيم كلمة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كيف يمكنني تقسيم كلمة كما يبين المثال التالي

عندي"edit1" و "edit2" و "edit3"و "bouton"

delphi*arabe توجد"edit1" في

"bouton" و عند الضغط على

يعطي هذه النتيجة

delphi ="edit2"

و

arabe ="edit3"
السلام عليكم
أولا: ألق السلام Smile
ثانيا: هناك عدة طرق:
باستخدام DelimitedText الموجودة في TStringList، مثال لـ Zarko Gajic
PHP كود :
{
A simple function that accepts a string and a delimiter char, splits a
string into tokens 
(TStringList items) delimited with a char value.
}

procedure Split
  
(const Delimiter: Char;
   
Input: string;
   const 
Strings: TStrings);
begin
  Assert
(Assigned(Strings));
  
Strings.Clear;
  
Strings.Delimiter := Delimiter;
  
Strings.DelimitedText := Input;
end;


// Usage:
procedure TForm1.Button1Click(Sender: TObject);
var
  
A: TStringList;
begin
  A 
:= TStringList.Create;
  try
    
Split(' ', 'your delphi guide', A);
    
ShowMessage(a[0]); //your
    
ShowMessage(a[1]); //delphi
    
ShowMessage(a[2]); //guide
  
finally
    
A.Free;
  
end;
end; 
بطريقة أخرى يمكن القيام بذلك يدويا. مثال لصاحبه:
PHP كود :
{
 
VERY fast split function
 
this function returns part of a string based on
 constant defineable delimiters
, such as ";". So
 SPLIT
('this is a test ',' ',3) = 'is' or
 
SPLIT('data;another;yet;again;more;',';',4) = 'yet'

 
Split function shifts index integer by two to
 be compatible with commonly used PD split 
function
 
gpl 2004 / Juhani Suhonen
}

function 
split(input: string; schar: Char; s: Integer): string;
var
  
c: array of Integer;
  
b, t: Integer;
begin
  Dec
(s, 2);  // for compatibility with very old & slow split function
  
t := 0;     // variable T needs to be initialized...
  
setlength(c, Length(input));
  for 
b := 0 to pred(High(c)) do 
  
begin
    c
[b + 1] := posex(schar, input, succ(c[b]));
    
// BREAK LOOP if posex looped (position before previous)
    // or wanted position reached..
    
if (c[b + 1] < c[b]) or (s < t) then break 
    else 
      
Inc(t);
  
end;
  
Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));
end; 
بالتوفيق.