請問該如何做出儲存檔案及開啟檔案的功能 |
答題得分者是:pceyes
|
lirick2003
一般會員 ![]() ![]() 發表:17 回覆:16 積分:11 註冊:2007-02-23 發送簡訊給我 |
|
foxelf
初階會員 ![]() ![]() 發表:9 回覆:42 積分:30 註冊:2003-03-05 發送簡訊給我 |
你可以先用TStringList儲存元件的值,利用TStringList.SaveToFile儲存檔案
OpenDialog.Filter 設定 *.stb|*.stb ===================引 用 lirick2003 文 章=================== 請問? 假設今日我要在程式裡加入儲存檔案和讀取檔案的功能... 那麼...我該怎麼去儲存Edit / CheckBox / ComboBox 各元件的值? 不是寫在登入檔內... 我想用SaveDialog來儲存成副檔名為.stb 開啟也只能用OpenDialog來開啟.stb檔案 請教要如何做...才能達到... |
lirick2003
一般會員 ![]() ![]() 發表:17 回覆:16 積分:11 註冊:2007-02-23 發送簡訊給我 |
|
wscken
初階會員 ![]() ![]() 發表:28 回覆:75 積分:45 註冊:2003-08-05 發送簡訊給我 |
可以使用foxelf 大大說的,或是直接用
ReadComponentRes WriteComponentRes 來做這樣的功能,比如: [code delphi] procedure TForm1.FormCreate(Sender: TObject); var FS: TFileStream; i: integer; resFileName: String; begin resFileName := Application.ExeName '.res'; if FileExists(resFileName) then begin FS := TFileStream.Create(resFileName, fmOpenRead); try for i := 0 to ComponentCount - 1 do begin try FS.ReadComponentRes(Components[i]); except on E: Exception do begin MessageDlg(Components[i].Name '初始化狀態失敗!' #13#10 E.Message #13#10 '請刪除' resFileName, mtError, [mbOk], 0); Application.Terminate; Abort; end; end; end; finally FS.Free; end; end; end; [/code] [code delphi] procedure TForm1.FormDestroy(Sender: TObject); var FS: TFileStream; i: integer; begin FS := TFileStream.Create(Application.ExeName '.res', fmCreate); try for i := 0 to ComponentCount - 1 do FS.WriteComponentRes(Components[i].Name, Components[i]); finally FS.Free; end; end; [/code] |
pceyes
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
------
努力會更接近成功 |
pceyes
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
[code delphi] unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; CheckBox1: TCheckBox; ComboBox1: TComboBox; Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Fn : Tstringlist; // 宣告Tstringlist implementation {$R *.dfm} // 存檔 procedure TForm1.Button2Click(Sender: TObject); begin if SaveDialog1.Execute then begin try Fn.values['Edit1'] := Edit1.text; Fn.values['Combobox1'] := Combobox1.text; if Checkbox1.Checked then Fn.values['Checkbox1'] := '選取' else Fn.values['Checkbox1'] := '不選'; Fn.SaveToFile(SaveDialog1.FileName); except showmessage('寫檔失敗'); end; end; end; // 開啟檔案 procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then begin Fn.LoadFromFile(OpenDialog1.FileName); // 載入檔案 try edit1.text := Fn.values['Edit1']; Combobox1.Text := Fn.values['Combobox1']; if Fn.values['Checkbox1']='選取' then Checkbox1.Checked := true else Checkbox1.Checked := false; except showmessage('讀檔失敗'); end; end; end; // TStringList產生 procedure TForm1.FormCreate(Sender: TObject); begin Fn := TStringList.Create; end; // TStringList釋放 procedure TForm1.FormDestroy(Sender: TObject); begin Fn.Free; end; end. [/code]
------
努力會更接近成功 |
lirick2003
一般會員 ![]() ![]() 發表:17 回覆:16 積分:11 註冊:2007-02-23 發送簡訊給我 |
|
pceyes
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
|
lirick2003
一般會員 ![]() ![]() 發表:17 回覆:16 積分:11 註冊:2007-02-23 發送簡訊給我 |
|
pceyes
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
摘自 careychen 大大的作品修改,因未徵得他的同意,若堅持反對將予以刪除,以尊重智慧財產權,特此聲明。
[會員作品發表區(限本人創作發表) » 懶惰鬼自動登入器 - (利用 Delphi 控制網頁的 Demo)] http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=95258 [code delphi] procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin Fn := Tstringlist.Create; for I := 0 to ComponentCount - 1 do if Components[I] is TMemo then Fn.values[TMemo(Components[I]).Name] := TMemo(Components[I]).Lines.Text else if Components[I] is TComboBox then Fn.values[TCombobox(Components[I]).Name] := TCombobox(Components[I]).Text else if Components[I] is TEdit then Fn.values[TEdit(Components[I]).Name] := TEdit(Components[I]).text else if Components[I] is TListBox then Fn.values[TListBox(Components[I]).Name] := TListBox(Components[I]).Items.Text else if Components[I] is TCheckbox then if TCheckbox(Components[I]).Checked then Fn.values[TCheckBox(Components[I]).Name] := 'Y' else Fn.values[TCheckBox(Components[I]).Name] := 'N' end; [/code]
------
努力會更接近成功 |
lirick2003
一般會員 ![]() ![]() 發表:17 回覆:16 積分:11 註冊:2007-02-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |