بسم الله الرحمن الرحيم
هذه مشاكل غريبة عليَّ ولم أعرف ما تفسيرها :
type
TStrArray = array of String;
var
sourceTxt : String;
sourceArr : Array of String;
function Explode2(const cSeparator, vString: String): TStrArray;
var
i: Integer;
S: String;
begin
S := vString;
SetLength(Result, 0);
i := 0;
while Pos(cSeparator, S) > 0 do begin
SetLength(Result, Length(Result) +1);
Result := Copy(S, 1, Pos(cSeparator, S) -1);
Inc(i);
S := Copy(S, Pos(cSeparator, S) + Length(cSeparator), Length(S));
end;
SetLength(Result, Length(Result) +1);
Result := Copy(S, 1, Length(S));
end;
//------------------------------------------------------
procedure Explode(const cSeparator, vString: String; Result : TStrArray);
var
i: Integer;
S: String;
begin
S := vString;
SetLength(Result, 0);
i := 0;
while Pos(cSeparator, S) > 0 do begin
SetLength(Result, Length(Result) +1);
Result := Copy(S, 1, Pos(cSeparator, S) -1);
Inc(i);
S := Copy(S, Pos(cSeparator, S) + Length(cSeparator), Length(S));
end;
SetLength(Result, Length(Result) +1);
Result := Copy(S, 1, Length(S));
end;
//------------------------------------------------------
//function resetArrayOfwords (src: String; ) TStrArray;
procedure resetArrayOfwords (src: String; var Result : Array of String);
begin//
//result := Explode(' ', src);
Explode(' ', src, result);
end;
//------------------------------------------------------
function randomWord : String;
begin //
result := '';
if Length(sourceArr)= 0 Then //exit;
sourceArr := resetArrayOfwords (sourceTxt);
if Length(sourceArr)>0 Then
begin
result := randomFrom(sourceArr);
end;
end;
//------------------------------------------------------وكما ترى الفرق بين بين Explode2 و Explode هوالرأس يعني هذا إجراء وهذه دالة.
والمشكلة هي التفريق بين النوع TStrArray و المتغير من نوع Array of String
لماذا هذه الدوال تفرق بينهما مع أنها كلها مصفوفات ومادتها واحدة ؟؟؟؟.
فهل من أحد يعطيني تفسير لذلك وجزاكم الله خيراً ولا حرمكم الأجر .
والمطلوب هو تشغيل الدالة randomFrom وجزاكم الله خيراً