PDA

View Full Version : سوال: ذخیره کردن در دلفی



mohammad amin
شنبه 19 فروردین 1391, 15:47 عصر
سلام!

چطور می توان یک فایل دلفی را در پوشه ای ذخیره کرد

منظورم save as ی نیست که برای خود برنامه دلفی انجام میگیرد.

منظورم این است که مثلا یک برنامه دفترچه تلفن را اجرا کرده اید و سه مشخصات را وارد کردید.

حال بار دیگر که این برنامه را اجرا می کنید آن مشخصات پاک نشده باشد ، ذخیره شده باشد.

امیدوارم متوجه شده باشید!!!

اگر سوالی از صورت سوال داشتید بگویید تا بیشتر توضیح دهم.

Vahid.Shatery
شنبه 19 فروردین 1391, 17:07 عصر
خیلی مبهمه :متعجب:

Ananas
شنبه 19 فروردین 1391, 17:09 عصر
اگه درست متوجه شده باشم یک راهش استفاده از stream هاست مثلا TMemoryStream اول اطلاعات رو توی اون مینویسید بعد SaveToFile یا همچین چیزی داره که اطلاعات رو تو یک آدرس ذخیره میکنه و دفعه بعد هم به شکل LoadFromFile از روی فایل اطلاعات رو لود میکنه بعد اونو از TMemoryStream میخونی و کپی میکنی تو رکوردها و یا هرجایی که بخوای. مثال :


unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TVec3D = packed record
x, y, z : Single;
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
p : TPoint;
v : TVec3D;
ms : TMemoryStream;
begin
//--------------
v.x := 15;
v.y := 12.33333;
v.z := 7.5;
//--------------
p.X := 14;
p.Y := 70;
//--------------
ms := TMemoryStream.Create;
ms.Write(v, SizeOf(v));
ms.Write(p, SizeOf(p));
ms.SaveToFile('c:\MyFile.bin');
ms.Free;
//--------------
end;

procedure TForm1.Button2Click(Sender: TObject);
var
p : TPoint;
v : TVec3D;
ms : TMemoryStream;
filename : string;
begin
filename := 'c:\MyFile.bin';
if FileExists(filename) then
begin
ms := TMemoryStream.Create;
ms.LoadFromFile(filename);
ms.Read(v, SizeOf(v));
ms.Read(p, SizeOf(p));
ms.Free;
end else begin
ShowMessage('file "' + filename + '" is not exists!');
Exit;
end;
//--------------
ShowMessage('[' +
FloatToStr(v.x) + ' , ' +
FloatToStr(v.y) + ' , ' +
FloatToStr(v.z) + ']' + #13#10 +
'[' +
IntToStr(p.X) +
IntToStr(p.Y) + ']');
end;

end.

hamid-nic
شنبه 19 فروردین 1391, 18:39 عصر
دوست عزیز استفاده از فایل های ini برای کاری که می خواهید انجام دهید مناسب است .
توی همین سایت جست و جو کنید مطالب مورد نظر را پیدا می کنید .

Fastdesign
شنبه 19 فروردین 1391, 21:16 عصر
شما باید از دیتابیس (پایگاه داده) استفاده کنید . البته اگه درست منظورتان را متوجه شده باشم :لبخندساده:

سعید صابری
شنبه 19 فروردین 1391, 22:32 عصر
شما باید از دیتابیس (پایگاه داده) استفاده کنید . البته اگه درست منظورتان را متوجه شده باشم :لبخندساده:
استفاده ini یا رجیستری و... راحت و بهتر از دیتابیس هست برای این کار(مخصوصا ini)

MohsenB
شنبه 19 فروردین 1391, 22:45 عصر
سلام

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


استفاده از ProperyStore های موجود در مجموعه هایی نظیر Raize
استفاده از Lines.SaveToFile مربوط به کنترلهایی که لیستهای درون آنها از کلاسهایی نظیر TStrings استفاده میکنند .
استفاده از روش معمول کار با فایلها به روش پاسکال
استفاده از استریمها نظیر روش Ananas (http://barnamenevis.org/member.php?233990-Ananas)
ساخت یک فرمت فایل که نوع و قالب ذخیره را خودتان تعریف کنید بصورت کاملا اختصاصی
و ...


موفق باشید