請問:下面一維陣列保存資料的一段程式,爲什麼出錯? |
尚未結案
|
wnnnnnn6
一般會員 發表:5 回覆:11 積分:3 註冊:2004-11-24 發送簡訊給我 |
我想定義一個一維陣列來保存幾個DBEdit裡面的資料,然後在窗體重新顯示的時候再用一維陣列把儲存的資料指派給那幾個DBEdit,結果我儲存的資料只能在第一個DBEdit中顯示。下面是我的程式,大家幫我看看吧,哪裡出了問題了? var
myfile:textfile;
myarray:array[1..6]of string;
i:integer;
begin
if opendialog1.Execute then
assignfile(myfile,opendialog1.FileName);
reset(myfile);
i:=0;
for i:=1 to 6 do
begin
read(myfile,myarray[i]);
fileseek(handle,0,0);
adotable1.Close;
adotable1.open;
adotable1.Edit;
dbedit1.Text:=myarray[1];
dbedit2.Text:=myarray[2];
dbedit3.Text:=myarray[3];
dbedit4.Text:=myarray[4];
dbedit5.Text:=myarray[5];
dbedit6.Text:=myarray[6];
end;
closefile(myfile);
end;
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
var myfile:textfile; myarray:array[1..6]of string; i:integer; begin if opendialog1.Execute then assignfile(myfile,opendialog1.FileName); reset(myfile); i:=0; for i:=1 to 6 do begin read(myfile,myarray[ i ]); fileseek(handle,0,0); end; adotable1.Close; adotable1.open; adotable1.Edit; dbedit1.Text:=myarray[1]; dbedit2.Text:=myarray[2]; dbedit3.Text:=myarray[3]; dbedit4.Text:=myarray[4]; dbedit5.Text:=myarray[5]; dbedit6.Text:=myarray[6];基本上應該長這樣,再來就是讀檔的部份,你檔案儲存的格式是如何?讀檔案的地方看起來怪怪的 一一a |
tonytop
中階會員 發表:6 回覆:114 積分:89 註冊:2003-12-04 發送簡訊給我 |
的確要提供妳opendialog1.FileName的檔案格式,
若妳是用一行一行的存法,可改為下列程式:
if opendialog1.Execute then assignfile(myfile, opendialog1.FileName); reset(myfile); //i := 0; //這行不需要了 for i := 1 to 6 do begin Readln(myfile, myarray[i]); end; //這段拿到迴圈外run起來較快 adotable1.Close; adotable1.open; adotable1.Edit; dbedit1.Text := myarray[1]; dbedit2.Text := myarray[2]; dbedit3.Text := myarray[3]; dbedit4.Text := myarray[4]; dbedit5.Text := myarray[5]; dbedit6.Text := myarray[6]; closefile(myfile);若妳檔案格式是存在同一行,那要另一種作法了。 |
wnnnnnn6
一般會員 發表:5 回覆:11 積分:3 註冊:2004-11-24 發送簡訊給我 |
不行呀!按照您的方法做,還是那樣的結果。
我“保存”的程式碼是:
procedure TForm1.N2Click(Sender: TObject); //保存
var
myfile:textfile;
myarray:array[1..6] of string;
i:integer;
begin
if savedialog1.Execute then
begin
assignfile(myfile,savedialog1.FileName);
rewrite(myfile);
for i:=1 to 6 do
begin
adotable1.Open;
adotable1.Edit;
myarray[1]:=dbedit1.Text;//.Field.AsString;
myarray[2]:=dbedit2.Text;//.Field.AsString;
myarray[3]:=dbedit3.Text;//.Field.AsString;
myarray[4]:=dbedit4.Text;//.Field.AsString;
myarray[5]:=dbedit5.Text;//.Field.AsString;
myarray[6]:=dbedit6.Text;//.Field.AsString;
write(myfile,myarray[i]);
end;
fileseek(handle,0,0);
closefile(myfile);
end;
end;
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
procedure TForm1.N2Click(Sender: TObject); //保存 var myfile:textfile; myarray:array[1..6] of string; i:integer; begin if savedialog1.Execute then begin myarray[1]:=dbedit1.Text;//.Field.AsString; myarray[2]:=dbedit2.Text;//.Field.AsString; myarray[3]:=dbedit3.Text;//.Field.AsString; myarray[4]:=dbedit4.Text;//.Field.AsString; myarray[5]:=dbedit5.Text;//.Field.AsString; myarray[6]:=dbedit6.Text;//.Field.AsString; assignfile(myfile,savedialog1.FileName); rewrite(myfile); for i:=1 to 6 do begin writeln(myfile,myarray[i]); end; closefile(myfile); end; end;我想改成這樣 tonytop 大大的 code 你就可以用了吧。 看起來你 myarray 保存起來並無他用,還是直接一點: procedure TForm1.N2Click(Sender: TObject); //保存 var myfile:textfile; begin if savedialog1.Execute then begin assignfile(myfile,savedialog1.FileName); rewrite(myfile); writeln(myfile,dbedit1.Text); writeln(myfile,dbedit2.Text); writeln(myfile,dbedit3.Text); writeln(myfile,dbedit4.Text); writeln(myfile,dbedit5.Text); writeln(myfile,dbedit6.Text); closefile(myfile); end; end;發表人 - allenchan 於 2004/11/24 18:32:52 |
wnnnnnn6
一般會員 發表:5 回覆:11 積分:3 註冊:2004-11-24 發送簡訊給我 |
謝謝allenchan和tonytop:
依你們的建議,我把程式做了如下的修改,當關閉表ADOTable後,按一下“開啓”按鈕時,結果還是隻能在第一個DBEdit中顯示。不知道程式到底是哪裡出錯了?
procedure TForm1.N2Click(Sender: TObject); //保存
var
myfile:textfile;
myarray:array[1..6] of string;
i:integer;
begin
savedialog1.Filter:='招標檔案(*.erc)|*.erc';
savedialog1.DefaultExt:='erc';
if savedialog1.Execute then
begin
assignfile(myfile,savedialog1.FileName);
rewrite(myfile);
adotable1.Open;
myarray[1]:=dbedit1.Text;
myarray[2]:=dbedit2.Text;
myarray[3]:=dbedit3.Text;
myarray[4]:=dbedit4.Text;
myarray[5]:=dbedit5.Text;
myarray[6]:=dbedit6.Text;
for i:=1 to 6 do
begin
write(myfile,myarray[i]);
end;
{ writeln(myfile,dbedit1.Text);
writeln(myfile,dbedit2.Text);
writeln(myfile,dbedit3.Text);
writeln(myfile,dbedit4.Text);
writeln(myfile,dbedit5.Text);
writeln(myfile,dbedit6.Text); }
closefile(myfile);
end;
end; procedure TForm1.N3Click(Sender: TObject); //打开
var
myfile:textfile;
myarray:array[1..6]of string;
i:integer;
begin
opendialog1.Filter:='招標檔案(*.erc)|*.erc';
opendialog1.DefaultExt:='erc';
if opendialog1.Execute then
begin
assignfile(myfile,opendialog1.FileName);
reset(myfile);
for i:=1 to 6 do
begin
readln(myfile,myarray[i]);
end;
fileseek(handle,0,0);
adotable1.Close;
//adotable1.open;
dbedit1.Text:=myarray[1];
dbedit2.Text:=myarray[2];
dbedit3.Text:=myarray[3];
dbedit4.Text:=myarray[4];
dbedit5.Text:=myarray[5];
dbedit6.Text:=myarray[6];
closefile(myfile);
end; end;
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
procedure TForm1.N2Click(Sender: TObject); //保存 var myfile : TStringList; begin savedialog1.Filter:='招標檔案(*.erc)|*.erc'; savedialog1.DefaultExt:='erc'; if savedialog1.Execute then begin adotable1.Open; myfile := TStringList.Create; myfile.Add(dbedit1.Text); myfile.Add(dbedit2.Text); myfile.Add(dbedit3.Text); myfile.Add(dbedit4.Text); myfile.Add(dbedit5.Text); myfile.Add(dbedit6.Text); myfile.SaveToFile(savedialog1.FileName); myfile.Destory; end; end; procedure TForm1.N3Click(Sender: TObject); //打? var myfile : TStringList; myarray:array[1..6]of string; i:integer; begin opendialog1.Filter:='招標檔案(*.erc)|*.erc'; opendialog1.DefaultExt:='erc'; if opendialog1.Execute then begin myfile := TStringList.Create; myfile.LoadFromFile(opendialog1.FileName); for i := 1 to myfile.count do begin myarray[ i ] := myfile.Strings[ i - 1 ]; end; myfile.Destory; adotable1.Close; //adotable1.open; dbedit1.Text := myarray[ 1 ]; dbedit2.Text := myarray[ 2 ]; dbedit3.Text := myarray[ 3 ]; dbedit4.Text := myarray[ 4 ]; dbedit5.Text := myarray[ 5 ]; dbedit6.Text := myarray[ 6 ]; end; end;我沒有 Delphi,所以這段碼只用我的小腦袋 compile 過。 |
wnnnnnn6
一般會員 發表:5 回覆:11 積分:3 註冊:2004-11-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |