المشاركات : 100
المواضيع 23
الإنتساب : Apr 2017
السمعة :
10
الشكر: 0
تم شكره 111 مرات في 63 مشاركات
تحية طيبة لكل اعضاء المنتدى عيدكم مبارك وكل عام وانتم باف خير
لدي سؤال كيف يتم قراءة جميع اسطر الملف النصي في مصفوفة ثم عمل له
split
الصورة خير دليل
الملفات المرفقة
صورة/صور
المشاركات : 100
المواضيع 23
الإنتساب : Apr 2017
السمعة :
10
الشكر: 0
تم شكره 111 مرات في 63 مشاركات
المشاركات : 752
المواضيع 239
الإنتساب : May 2018
السمعة :
209
الشكر: 765
تم شكره 2214 مرات في 752 مشاركات
16-08-19, 11:05 AM
(آخر تعديل لهذه المشاركة : 16-08-19, 11:46 AM {2} بواسطة 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;
ققط مررت على المنتدى قبل حتى ان افطر .
بعد الفطور سوف اعود
المشاركات : 100
المواضيع 23
الإنتساب : Apr 2017
السمعة :
10
الشكر: 0
تم شكره 111 مرات في 63 مشاركات
(16-08-19, 11:05 AM) 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;
ققط مررت على المنتدى قبل حتى ان افطر .
بعد الفطور سوف اعود
شكرا لكي اخي VIV
لدي ه>ا الكود خاص بسطر واحد
PHP كود :
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 ;
ولكن كيف يكون بالنسبة الاسطر كثيرة بارك الله فيك
المشاركات : 752
المواضيع 239
الإنتساب : May 2018
السمعة :
209
الشكر: 765
تم شكره 2214 مرات في 752 مشاركات
19-08-19, 11:58 AM
(آخر تعديل لهذه المشاركة : 19-08-19, 12:01 PM {2} بواسطة viv .)
وعليكم السلام ورحمة الله و كل عام وانتم بخير
موضوعك اسهل من كل هذا الذي عرضناه
ضع نموذج واداتين Memo واحدة لتحميل النص فيها والاخرى لاستقبال النتيجة
كود :
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('');
المشاركات : 100
المواضيع 23
الإنتساب : Apr 2017
السمعة :
10
الشكر: 0
تم شكره 111 مرات في 63 مشاركات
شكرا لك اخي المشرف على هتمامك ولكن يبدو انك لم تلاحض الفارق بين الصورتين
لاحض السطر في الصورة الاولى والصورة الثانية
المشاركات : 752
المواضيع 239
الإنتساب : May 2018
السمعة :
209
الشكر: 765
تم شكره 2214 مرات في 752 مشاركات
هل تقصد الرقم اول مثل 1700
هذا الرقم لا يوجد في الملف الذي قراءته
بنفس الطريقة السابقة يمكنك اضافته بحسب من اين جئت في السطر
كود :
memo2.Lines.add('[' + I.ToString + ']') ;
المشاركات : 100
المواضيع 23
الإنتساب : Apr 2017
السمعة :
10
الشكر: 0
تم شكره 111 مرات في 63 مشاركات
(29-08-19, 08:14 PM) viv كتب : هل تقصد الرقم اول مثل 1700
هذا الرقم لا يوجد في الملف الذي قراءته
بنفس الطريقة السابقة يمكنك اضافته بحسب من اين جئت في السطر
كود :
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.
هده صورة توضحية للناتج
عند اضافة اسطر كثيرة يعطيني خطا
الملفات المرفقة
صورة/صور
المشاركات : 752
المواضيع 239
الإنتساب : May 2018
السمعة :
209
الشكر: 765
تم شكره 2214 مرات في 752 مشاركات
انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لك
حسنا ، ضع مثال وضع معه النص والسطور التي تريد وارفعه وانا سوف اعدله لك
المشاركات : 100
المواضيع 23
الإنتساب : Apr 2017
السمعة :
10
الشكر: 0
تم شكره 111 مرات في 63 مشاركات
(31-08-19, 03:25 PM) viv كتب : انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لك
حسنا ، ضع مثال وضع معه النص والسطور التي تريد وارفعه وانا سوف اعدله لك
تفضل اخي المشرف
الملفات المرفقة
testme.zip (الحجم : 197.16 ك ب / التحميلات : 8)