View Full Version : خواندن خط مورد نظر میمو
  
francosoft
سه شنبه 10 آذر 1383, 12:12 عصر
سلام
یک شی میمو در دلفی داریم
می خواهیم وقتی دستور می دهیم برنامه برود و در یک شی میمو که در آن چندین خط چیز نوشته شده است را خط مورد نظر ما را در یک مثلا ادیت باکس نشون بده.
مثلا دستور می دهیم بره خط 10 و بره و خط ده را فقط نشون بده . آن هم در یک ادیت باکس
منتظرم
vcldeveloper
چهارشنبه 11 آذر 1383, 06:01 صبح
با استفاده از این تابع می تونید متن موجود در یک خط خاص رو بدست بیارید:
function GetLineStr(S: string; LineNumber: integer): string;
const
  SubStr = #13#10;
var
  CurPos, LastPos,
  CurLine,
  SubStrSize 		: integer;
  Found 				: boolean;
begin
  CurLine := 0;
  LastPos := 0;
  Found := False;
  SubStrSize := SizeOf(char)* Length(SubStr);
  if S = '' then
    Exit;
  CurPos := PosEx(SubStr, S);
  if CurPos = 0 then
  begin
    Result := S;
    Exit;
  end;
  while (not Found) do
  begin
    Inc(CurLine);
    if CurLine = LineNumber then
    begin
      Result := Copy(S, LastPos + SubStrSize, (CurPos - SubStrSize) - LastPos);
      Found := True;
    end
    else
    begin
      LastPos := CurPos;
      CurPos := PosEx(SubStr, S, CurPos + SubStrSize);
      //if string is finished or an illigal line number is requested
      if CurPos = 0 then
      begin
        Result := '';
        Found := True;
      end;
    end;
  end;
end;
مثال
 Edit1.Text := GetLineStr(Memo1.Text,5);
که خط پنجم از Memo1 رو بر می گردونه.
البته باید واحد StrUtils رو هم به بخش Uses اضافه کنید (در دلفی 7)
francosoft
چهارشنبه 11 آذر 1383, 11:41 صبح
سلام و بسیار بسیار متشکرم دوست عزیز
موفق باشی :)
DrDelphi2003
چهارشنبه 11 آذر 1383, 17:52 عصر
memo یک خاصیت به نام lines داره که اجازه می ده به هر خط از memo دست رسی داشته باشی و خیلی کارهای دیگه هم واست انجام میده!! نه !
vcldeveloper
پنج شنبه 12 آذر 1383, 02:51 صبح
memo یک خاصیت به نام lines داره که اجازه می ده به هر خط از memo دست رسی داشته باشی و خیلی کارهای دیگه هم واست انجام میده!! نه !
خیر، Lines در حالت عادی یک خط خاص رو بر نمیگردونه!
Panje Tala
یک شنبه 15 آذر 1383, 14:47 عصر
با سلام
میتونی به راحتی از کد زیر استفاده کنی:
edit1.Text:=memo1.Lines.Strings[row-1];
row شماره سطری است که میخواهی محتویات آنرا نشون بدی.
vcldeveloper
دوشنبه 16 آذر 1383, 02:40 صبح
edit1.Text:=memo1.Lines.Strings[row-1];
جالب بود، مرسی
مهدی کرامتی
دوشنبه 16 آذر 1383, 07:04 صبح
آقا/خانم sma_eslami: 
لطفا از این ببعد اسم های جامد مثل Memo را به فارسی ننویسید (میمو). وقتی عنوان تاپیک را خواندم تصور کردم بحث تاپیک درباره میمون است!
DrDelphi2003
سه شنبه 17 آذر 1383, 12:37 عصر
البته ببخشیدها من هم نگفتم که خود lines, گفتم متد ها و خواص زیادی داره. نه؟
 :strange:
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.