تقييم الموضوع :
  • 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 , asemshahen5
#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    
ولكن كيف يكون بالنسبة الاسطر كثيرة بارك الله فيك
الرد }}}
تم الشكر بواسطة: asemshahen5
#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 , asemshahen5
#6
شكرا لك اخي المشرف على هتمامك ولكن يبدو انك لم تلاحض الفارق بين الصورتين

لاحض السطر في الصورة الاولى والصورة الثانية
الرد }}}
تم الشكر بواسطة: asemshahen5
#7
هل تقصد الرقم اول مثل 1700

كود :
C:17000:S7

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

كود :
memo2.Lines.add('[' + I.ToString  + ']') ;
الرد }}}
تم الشكر بواسطة: asemshahen5
#8
(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.      


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

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


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة: asemshahen5 , viv , viv
#9
انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لك

حسنا ، ضع مثال وضع معه النص والسطور التي تريد وارفعه وانا سوف اعدله لك
الرد }}}
تم الشكر بواسطة: asemshahen5
#10
(31-08-19, 03:25 PM)viv كتب : انت تعقد الموضوع على نفسك ولم تستخدم Loop ابدا كما اشرت لك

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


الملفات المرفقة
.zip   testme.zip (الحجم : 197.16 ك ب / التحميلات : 8)
الرد }}}
تم الشكر بواسطة: asemshahen5


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Question [كود] مساعدة من فضلكم طلب سورس كود berrahem 0 862 07-05-22, 05:19 AM
آخر رد: berrahem
  [سؤال] طلب مساعدة Mayar Hanin 2 2,285 03-02-20, 02:37 PM
آخر رد: Mayar Hanin
  طلب مساعدة جزاكم الله خيرا fouadhdfouad 0 1,586 28-12-19, 10:55 PM
آخر رد: fouadhdfouad

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


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