منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مساعدة في استخراج اسطر ملف نصي في مصفوفة - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة Delphi (http://vb4arb.com/vb/forumdisplay.php?fid=213)
+--- قسم : قسم اسئلة Delphi (http://vb4arb.com/vb/forumdisplay.php?fid=215)
+--- الموضوع : مساعدة في استخراج اسطر ملف نصي في مصفوفة (/showthread.php?tid=30883)

الصفحات: 1 2


مساعدة في استخراج اسطر ملف نصي في مصفوفة - 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(SenderTObject);
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

كود :
C:17000:S7

هذا الرقم لا يوجد في الملف الذي قراءته
بنفس الطريقة السابقة يمكنك اضافته بحسب من اين جئت في السطر

كود :
memo2.Lines.add('[' + I.ToString  + ']') ;



RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - fouadhdfouad - 30-08-19

(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.      


هده صورة توضحية للناتج

عند اضافة اسطر كثيرة يعطيني خطا


RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - viv - 31-08-19

انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لك

حسنا ، ضع مثال وضع معه النص والسطور التي تريد وارفعه وانا سوف اعدله لك


RE: مساعدة في استخراج اسطر ملف نصي في مصفوفة - fouadhdfouad - 31-08-19

(31-08-19, 03:25 PM)viv كتب : انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لك

حسنا ، ضع مثال وضع معه النص والسطور التي تريد وارفعه وانا سوف اعدله لك
تفضل اخي المشرف