تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مساعدة في استخراج اسطر ملف نصي في مصفوفة
#1
تحية طيبة لكل اعضاء المنتدى عيدكم مبارك وكل عام وانتم باف خير

لدي سؤال كيف يتم قراءة جميع اسطر الملف النصي في مصفوفة ثم عمل له

split

الصورة خير دليل


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة:
#2
اين انتم يا خبرا الدالفي
الرد
تم الشكر بواسطة:
#3
وعليكم السلام ورحمة الله

وكل عام وانتم بخير

بالنسبة لقراءة ملف نصي يوجد سؤال هنا فيه الاجابة

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;


ققط مررت على المنتدى قبل حتى ان افطر .
بعد الفطور سوف اعود
الرد
تم الشكر بواسطة: sendbad100
#4
(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    
ولكن كيف يكون بالنسبة الاسطر كثيرة بارك الله فيك
الرد
تم الشكر بواسطة:
#5
وعليكم السلام ورحمة الله و كل عام وانتم بخير
موضوعك اسهل من كل هذا الذي عرضناه

ضع نموذج واداتين 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('');
الرد
تم الشكر بواسطة: sendbad100


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم