ورود

View Full Version : خواندن اطلاعات فایل



Maryam80
یک شنبه 31 اردیبهشت 1385, 17:07 عصر
با سلام

آیا روشی وجود دارد که به کمک آن بتوان به یک خط مشخصی از فایل رفت و اطلاعات آن خط را خواند و یا اطلاعات آن خط را با مقادیر جدید Replace کرد.
مثلا بگویم به خط 10 ام فایل برو و عبارت مقابل Name را در یک textbox قرار بده.

Unique
یک شنبه 31 اردیبهشت 1385, 18:08 عصر
با سلام

آیا روشی وجود دارد که به کمک آن بتوان به یک خط مشخصی از فایل رفت و اطلاعات آن خط را خواند و یا اطلاعات آن خط را با مقادیر جدید Replace کرد.
مثلا بگویم به خط 10 ام فایل برو و عبارت مقابل Name را در یک textbox قرار بده.

این روشی است که کار شما را راه میندازه البته اگر Structure فایل شما با حدس من یکی باشه :




ّFile Structure :
Name=vahid
Name=hamid
Name=ali

procedure getTextAtLine(l : integer);
var
strList : TStringList;
begin
strList := TStringList.Create;
strList.LoadFromFile('c:\vahid.txt');
form1.edit1.Text := copy(strList.Strings[l-1],6,length(strList.Strings[l-1])-5);
end;


البته اصولی کار با فایلها را اینجا یاد بگیرید :
delphi.about.com/od/database/l/aa080100a.htm

Maryam80
یک شنبه 31 اردیبهشت 1385, 19:21 عصر
ممنون از راهنمایی .
من هم از Memo استفاده کردم و دستوراتم تا حدود زیادی شبیه به کد شما می باشد.
ولی حالا یک سوال دیگر؟
چگونه می توان دستوراتی را که می خواهید در Command اجرا بشوند را توسط دلفی اجرا کرد؟:متفکر:

Unique
دوشنبه 01 خرداد 1385, 00:16 صبح
چگونه می توان دستوراتی را که می خواهید در Command اجرا بشوند را توسط دلفی اجرا کرد؟


ببینم منظور از Command چیه ؟ من متوجه نشدم !‌
MS DOS COMMAND ?
یا
ADO COMMAND ?
یا هر چیزی که من نفهمیدم !

Maryam80
دوشنبه 01 خرداد 1385, 07:22 صبح
برنامه ای که من دارم می نویسم تحت OS/2 باید اجرا بشود به همین دلیل از دلفی نسخه 1 دارم استفاده می کنم و منظورم از Command در اصل OS/2 Command می باشد .ولی همین قدر که بدانم با چه تابعی می توان command ها را اجرا کرد کفایت می کند.

Unique
دوشنبه 01 خرداد 1385, 11:12 صبح
راستش فکر کنم shellexecute موجود در یونیت Shellapi به کار شما نیاد !
بهتره از createprocess استفاده کنی !

اینم یک مثال :


program test;
{$APPTYPE CONSOLE}

uses
windows;

var
procInfo : process_information;
strtInfo : startupInfo;

const
fname : pchar = 'D:\server\page\RAMInfo.exe';

begin
with strtInfo do begin
ZeroMemory(@strtInfo, sizeof(strtInfo));
cb := sizeof(strtInfo);
end;
CreateProcess(fname, nil, nil, nil, false, 0, nil, nil, strtInfo, procInfo);
readln;
end.


از اونجائی کن من حتی محیط OS/2 را هم ندیدم ! اما شاید این تابع به درد بخوره ! توی Linux استفاده داره !



FUNCTION rat_CreateProcess(var Env : parameter_type;
const Cmd : string) : Boolean;
label 1;
var
LastErr : Integer;
{$IFDEF WINDOWS}
si : Windows.STARTUPINFO;
pi : Windows.PROCESS_INFORMATION;
Res : Longbool;
{$ENDIF WINDOWS}
begin
Result:=false;
{$IFDEF LINUX}
LastErr:=Shell('nohup '+Cmd+' &');
IF LastErr<>0 THEN
BEGIN
rat_error_int(Paras,'959: failed to start batch job',LastErr);
GOTO 1;
END;
{$ENDIF LINUX}
{$IFDEF WINDOWS}
FillChar(si,sizeof(Windows.STARTUPINFO),Chr(0));

si.cb := sizeof(si);
si.dwFlags := Windows.STARTF_USESHOWWINDOW;
si.wShowWindow := Windows.SW_HIDE;

Res:=Windows.CreateProcessA(nil,PChar(Cmd),nil,nil ,FALSE,
Windows.NORMAL_PRIORITY_CLASS,
nil,nil,si,pi);
IF not Res THEN
BEGIN
LastErr:=Windows.GetLastError;
rat_error_int(Paras,'959: failed to start batch job',LastErr);
GOTO 1;
END;
{$ENDIF WINDOWS}
Result:=true;
1:end;

vcldeveloper
سه شنبه 02 خرداد 1385, 07:49 صبح
راستش فکر کنم shellexecute موجود در یونیت Shellapi به کار شما نیاد !
بهتره از createprocess استفاده کنی !

هر دو تابع فوق مربوط به API ویندوز هستند و در سیستم عامل دیگه ای کار نمی کنند .

Unique
سه شنبه 02 خرداد 1385, 10:10 صبح
جناب کشاورز - تابع FUNCTION rat_CreateProcess در Linux کار میکنه !