المشاركات : 7
المواضيع 3
:
: 0
الإنتساب : Apr 2010
كيف يمكنني تقسيم كلمة كما يبين المثال التالي
عندي"edit1" و "edit2" و "edit3"و "bouton"
delphi*arabe توجد"edit1" في
"bouton" و عند الضغط على
يعطي هذه النتيجة
delphi ="edit2"
و
arabe ="edit3"
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
السلام عليكم
أولا: ألق السلام 
ثانيا: هناك عدة طرق:
باستخدام 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;
بالتوفيق.