مساعدة في استخراج اسطر ملف نصي في مصفوفة - fouadhdfouad - 14-08-19
تحية طيبة لكل اعضاء المنتدى عيدكم مبارك وكل عام وانتم باف خير
لدي سؤال كيف يتم قراءة جميع اسطر الملف النصي في مصفوفة ثم عمل له
split
الصورة خير دليل
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - fouadhdfouad - 15-08-19
اين انتم يا خبرا الدالفي
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - viv - 16-08-19
وعليكم السلام ورحمة الله
وكل عام وانتم بخير
بالنسبة لقراءة ملف نصي يوجد سؤال هنا فيه الاجابة
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;
ققط مررت على المنتدى قبل حتى ان افطر .
بعد الفطور سوف اعود
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - fouadhdfouad - 16-08-19
(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;
ولكن كيف يكون بالنسبة الاسطر كثيرة بارك الله فيك
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - viv - 19-08-19
وعليكم السلام ورحمة الله و كل عام وانتم بخير
موضوعك اسهل من كل هذا الذي عرضناه
ضع نموذج واداتين 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('');
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - fouadhdfouad - 28-08-19
شكرا لك اخي المشرف على هتمامك ولكن يبدو انك لم تلاحض الفارق بين الصورتين
لاحض السطر في الصورة الاولى والصورة الثانية
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - viv - 29-08-19
هل تقصد الرقم اول مثل 1700
هذا الرقم لا يوجد في الملف الذي قراءته
بنفس الطريقة السابقة يمكنك اضافته بحسب من اين جئت في السطر
كود :
memo2.Lines.add('[' + I.ToString + ']') ;
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - fouadhdfouad - 30-08-19
(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.
هده صورة توضحية للناتج
عند اضافة اسطر كثيرة يعطيني خطا
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - viv - 31-08-19
انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لك
حسنا ، ضع مثال وضع معه النص والسطور التي تريد وارفعه وانا سوف اعدله لك
RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - fouadhdfouad - 31-08-19
(31-08-19, 03:25 PM)viv كتب : انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لك
حسنا ، ضع مثال وضع معه النص والسطور التي تريد وارفعه وانا سوف اعدله لك
تفضل اخي المشرف
|