14-08-19, 10:24 AM
تحية طيبة لكل اعضاء المنتدى عيدكم مبارك وكل عام وانتم باف خير
لدي سؤال كيف يتم قراءة جميع اسطر الملف النصي في مصفوفة ثم عمل له
split
الصورة خير دليل
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;
program Project1;
{$APPTYPE CONSOLE}
uses
Classes;
var
List: TStrings;
begin
List := TStringList.Create;
try
ExtractStrings([':'], [], PChar('word:doc,txt,docx'), List);
WriteLn(List.Text);
ReadLn;
finally
List.Free;
end;
end.
List[0] = 'word'
List[1] = 'doc,txt,docx'
function SplitString(const S, Delimiters: string): TStringDynArray;
function Split(const Separator: array of Char): TArray<string>; overload;
function Split(const Separator: array of Char; Count: Integer): TArray<string>; overload;
function Split(const Separator: array of Char; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of string): TArray<string>; overload;
function Split(const Separator: array of string; Count: Integer): TArray<string>; overload;
function Split(const Separator: array of string; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of Char; Quote: Char): TArray<string>; overload;
function Split(const Separator: array of Char; QuoteStart, QuoteEnd: Char): TArray<string>; overload;
function Split(const Separator: array of Char; QuoteStart, QuoteEnd: Char; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of Char; QuoteStart, QuoteEnd: Char; Count: Integer): TArray<string>; overload;
function Split(const Separator: array of Char; QuoteStart, QuoteEnd: Char; Count: Integer; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of string; Quote: Char): TArray<string>; overload;
function Split(const Separator: array of string; QuoteStart, QuoteEnd: Char): TArray<string>; overload;
function Split(const Separator: array of string; QuoteStart, QuoteEnd: Char; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of string; QuoteStart, QuoteEnd: Char; Count: Integer): TArray<string>; overload;
function Split(const Separator: array of string; QuoteStart, QuoteEnd: Char; Count: Integer; Options: TStringSplitOptions): TArray<string>; overload;
var
MyString: String;
Splitted: TArray<String>;
begin
MyString := String.Join(',', ['String1', 'String2', 'String3']);
Splitted := MyString.Split([','], 2);
end.
Uses
StrUtils, Classes;
Var
Str, Delimiter : String;
begin
// Str is the input string, Delimiter is the delimiter
With TStringList.Create Do
try
Text := ReplaceText(S,Delim,#13#10);
// From here on and until "finally", your desired result strings are
// in strings[0].. strings[Count-1)
finally
Free; //Clean everything up, and liberate your memory ;-)
end;
end;
SplitString(':', 'abc') returns : result[0] = abc
SplitString(':', 'a:b:c:') returns : result[0] = a
result[1] = b
result[2] = c
result[3] = <empty string>
SplitString(':', 'a:b:c:', 2) returns: result[0] = a
result[1] = b
procedure TForm208.Button1Click(Sender: TObject);
var
lst: TStringList;
begin
lst := TStringList.Create;
try
lst.LineBreak := '<->';
lst.Text := 'Whale<->Mammal<->Ocean';
Memo1.Lines := lst;
finally
lst.Free;
end;
end;
(16-08-19, 11:05 AM)viv كتب : [ -> ]وعليكم السلام ورحمة اللهشكرا لكي اخي VIV
وكل عام وانتم بخير
بالنسبة لقراءة ملف نصي يوجد سؤال هنا فيه الاجابة
http://vb4arb.com/vb/showthread.php?tid=30050
بالنسبة لوضع نص او حروف فالطرق كثيرة
الطرق كثيرة منها على سبيل المثال
كود :
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;
كما لست في حاجة الى استخدام Split function
كود :
program Project1;
{$APPTYPE CONSOLE}
uses
Classes;
var
List: TStrings;
begin
List := TStringList.Create;
try
ExtractStrings([':'], [], PChar('word:doc,txt,docx'), List);
WriteLn(List.Text);
ReadLn;
finally
List.Free;
end;
end.
لوضعها في List مثلا
كود :
List[0] = 'word'
List[1] = 'doc,txt,docx'
باستخدام System.StrUtils.SplitString
كود :
function SplitString(const S, Delimiters: string): TStringDynArray;
باستخدام الوحدة System.SysUtils.TStringHelper.Split كل هذه Function مختلفة
كود :
function Split(const Separator: array of Char): TArray<string>; overload;
function Split(const Separator: array of Char; Count: Integer): TArray<string>; overload;
function Split(const Separator: array of Char; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of string): TArray<string>; overload;
function Split(const Separator: array of string; Count: Integer): TArray<string>; overload;
function Split(const Separator: array of string; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of Char; Quote: Char): TArray<string>; overload;
function Split(const Separator: array of Char; QuoteStart, QuoteEnd: Char): TArray<string>; overload;
function Split(const Separator: array of Char; QuoteStart, QuoteEnd: Char; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of Char; QuoteStart, QuoteEnd: Char; Count: Integer): TArray<string>; overload;
function Split(const Separator: array of Char; QuoteStart, QuoteEnd: Char; Count: Integer; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of string; Quote: Char): TArray<string>; overload;
function Split(const Separator: array of string; QuoteStart, QuoteEnd: Char): TArray<string>; overload;
function Split(const Separator: array of string; QuoteStart, QuoteEnd: Char; Options: TStringSplitOptions): TArray<string>; overload;
function Split(const Separator: array of string; QuoteStart, QuoteEnd: Char; Count: Integer): TArray<string>; overload;
function Split(const Separator: array of string; QuoteStart, QuoteEnd: Char; Count: Integer; Options: TStringSplitOptions): TArray<string>; overload;
مثال
كود :
var
MyString: String;
Splitted: TArray<String>;
begin
MyString := String.Join(',', ['String1', 'String2', 'String3']);
Splitted := MyString.Split([','], 2);
end.
ايضا مثال أخر
كود :
Uses
StrUtils, Classes;
Var
Str, Delimiter : String;
begin
// Str is the input string, Delimiter is the delimiter
With TStringList.Create Do
try
Text := ReplaceText(S,Delim,#13#10);
// From here on and until "finally", your desired result strings are
// in strings[0].. strings[Count-1)
finally
Free; //Clean everything up, and liberate your memory ;-)
end;
end;
مثال اخر
كود :
SplitString(':', 'abc') returns : result[0] = abc
SplitString(':', 'a:b:c:') returns : result[0] = a
result[1] = b
result[2] = c
result[3] = <empty string>
SplitString(':', 'a:b:c:', 2) returns: result[0] = a
result[1] = b
مثال اخر
كود :
procedure TForm208.Button1Click(Sender: TObject);
var
lst: TStringList;
begin
lst := TStringList.Create;
try
lst.LineBreak := '<->';
lst.Text := 'Whale<->Mammal<->Ocean';
Memo1.Lines := lst;
finally
lst.Free;
end;
end;
ققط مررت على المنتدى قبل حتى ان افطر .
بعد الفطور سوف اعود
procedure TForm1.Button1Click(Sender: TObject);
var
List:TStrings;
begin
memo2.Clear;
List := TStringList.Create;
try
ExtractStrings([' '], [], PChar(memo1.Lines[i]), List);
memo2.Lines.add(List[2]+' '+ List[1]+' '+List[3]+' '+List[4]);
finally
List.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I:Integer;
begin
memo2.Clear;
for I := 0 to memo1.Lines.Count-1 do
begin
memo2.Lines.add('[' + I.ToString + ']') ;
memo2.Lines.add(memo1.Lines[I]) ;
end;
end;
end.
C:17000:S7
C:12800:f4
C:13000:k8
[0]
C:17000:S7
[1]
C:12800:f4
[2]
C:13000:k8
memo1.Lines.LoadFromFile('');
memo2.Lines.SaveToFile('');
C:17000:S7
memo2.Lines.add('[' + I.ToString + ']') ;
(29-08-19, 08:14 PM)viv كتب : [ -> ]هل تقصد الرقم اول مثل 1700
كود :
C:17000:S7
هذا الرقم لا يوجد في الملف الذي قراءته
بنفس الطريقة السابقة يمكنك اضافته بحسب من اين جئت في السطر
كود :
memo2.Lines.add('[' + I.ToString + ']') ;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
List:TStrings;
begin
memo2.Clear;
List := TStringList.Create;
try
ExtractStrings([' '], [], PChar(memo1.Lines[i]), List);
memo2.Lines.add(List[2]+' '+ List[1]+' '+List[4]+' '+List[3]);
finally
List.Free;
end;
end;
end.
(31-08-19, 03:25 PM)viv كتب : [ -> ]انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لكتفضل اخي المشرف
حسنا ، ضع مثال وضع معه النص والسطور التي تريد وارفعه وانا سوف اعدله لك