TstringList一問~ |
答題得分者是:supman
|
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
|
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
引言: 您好: 出現這總錯誤訊息一般來講應該是您把記憶體用超過了,您可以使用f7單部追蹤看看是否是這樣 如: List:TStringList有10個元素 List.Strings[11]存取第11各就會出現這樣的錯誤訊息. 您可以把那程式先單純化,測看看,或者貼出來我看看是哪邊出問題. 另外上傳圖片,請轉成jpg,以節省網路資源s:=''; sk:=''; sp:=''; p:=0; j:=0; while j <=ttcount-1 Do Begin If (rd1[j].ItemIndex=0)And(rd2[j].ItemIndex=0) Then Begin s:=Trim(Copy(vt.Strings[tc],StrToInt(ed1[j].Text),StrToInt(ed2[j].Text))); p:=Length(s); If p |
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
引言: 您好: 你有先單步追蹤過了嗎?程式沒頭沒尾要怎看? rd1[j].ItemIndex=0 這各有可能引發錯誤 vt.Strings[tc] 這各也有可能引發錯誤 問題是rd,vt還有一些您在用的變數,只有您知道他的長度以及他是定義成什麼,這樣怎麼幫你? 另外請利用 〔Code〕 unit Utran; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ShellCtrls, ExtCtrls; type TForm1 = class(TForm) CheckBox1: TCheckBox; Label1: TLabel; OpenDialog1: TOpenDialog; Edit1: TEdit; Button1: TButton; Label3: TLabel; Label2: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Button2: TButton; Memo1: TMemo; RadioGroup1: TRadioGroup; Button3: TButton; Button4: TButton; SaveDialog1: TSaveDialog; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ByAdd(Sender:TObject); procedure Button2Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Check(Sender: TObject); private { Private declarations } public end; TEventOBJ=Object procedure TEditOnChange(Sender: Tobject); end; var Form1: TForm1; MyEvent:TEventOBJ; ttcount,tc:integer; ed1,ed2,ed3:array[0..20] of Tedit; rd1,rd2:array[0..20] of TRadioGroup; s1,s2,vt,st:TstringList; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then edit1.Text :=OpenDialog1.FileName; end; procedure TForm1.ByAdd(Sender:TObject); begin ed1[ttcount]:=TEdit.Create(Self); ed1[ttcount].Parent:=Self; ed1[ttcount].Left:=16; ed1[ttcount].Top:=168 ttcount*40; ed1[ttcount].Height:=21; ed1[ttcount].Width:=60; ed2[ttcount]:=TEdit.Create(Self); ed2[ttcount].Parent:=Self; ed2[ttcount].Left:=136; ed2[ttcount].Top:=168 ttcount*40; ed2[ttcount].Height:=21; ed2[ttcount].Width:=60; ed3[ttcount]:=TEdit.Create(Self); ed3[ttcount].Parent:=Self; ed3[ttcount].Left:=544; ed3[ttcount].Top:=168 ttcount*40; ed3[ttcount].Height:=21; ed3[ttcount].Width:=140; rd1[ttcount]:=TRadioGroup.Create(Self); rd1[ttcount].Parent:=Self; rd1[ttcount].Left:=240; rd1[ttcount].Top:=160 ttcount*40; rd1[ttcount].Width:=120; rd1[ttcount].Height:=33; rd1[ttcount].Columns:=2; rd1[ttcount].Items.AddStrings(s1); rd1[ttcount].ItemIndex:=0; rd2[ttcount]:=TRadioGroup.Create(Self); rd2[ttcount].Parent:=Self; rd2[ttcount].Left:=384; rd2[ttcount].Top:=160 ttcount*40; rd2[ttcount].Width:=120; rd2[ttcount].Height:=33; rd2[ttcount].Columns:=2; rd2[ttcount].Items.AddStrings(s2); rd2[ttcount].ItemIndex:=0; ed1[ttcount].OnChange:=MyEvent.TEditOnChange; ed2[ttcount].OnChange:=Myevent.TEditOnChange; ed3[ttcount].OnChange:=Myevent.TEditOnChange; end; procedure TEventOBJ.TEditOnChange(Sender:TObject); var i:integer; begin If (ed1[ttcount].Text<>'') And (ed2[ttcount].Text <>'')Or(ed3[ttcount].Text <>'') Then Begin inc(ttcount); If ttcount>6 Then Form1.Height:=Form1.Height 40; Form1.ByAdd(Sender); End; end; procedure TForm1.FormCreate(Sender: TObject); begin ttcount:=0; s1:=TstringList.Create; s1.Add('靠左'); s1.Add('靠右'); s2:=TstringList.Create; s2.Add('空白'); s2.Add('補零'); ByAdd(Sender); end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Lines.LoadFromFile(Edit1.Text); end; procedure TForm1.Edit1Change(Sender: TObject); begin If Edit1.Text <>'' Then button2.Enabled:=True else Button2.Enabled:=False; end; procedure TForm1.Button4Click(Sender: TObject); begin s1.Free; s2.Free; close; end; procedure TForm1.Check(Sender: TObject); var s,sk,sp:string; i,j,p:integer; begin s:=''; sk:=''; sp:=''; p:=0; j:=0; while j <=ttcount-1 Do Begin If (rd1[j].ItemIndex=0)And(rd2[j].ItemIndex=0) Then Begin s:=Trim(Copy(vt.Strings[tc],StrToInt(ed1[j].Text),StrToInt(ed2[j].Text))); p:=Length(s); If p |
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
[cdoe]
1.ed1,ed2,ed3:array[0..20] of Tedit; //<--ed3宣告0~20個陣列 2.
var i:integer;
t:textfile;
begin
vt:=TStringList.Create;
vt.LoadFromFile(Edit1.Text);
st:=TStringList.Create;
If CheckBox1.Checked Then
Begin
For tc := 0 to vt.Count-1 Do //<--若vt.Count大於20
Begin
If (ed3[tc].Text='') Then //<--ed3的陣列是乎是超過20個以上了!!
Begin
Check(Sender);
End
Else
Begin
End;
[/code] 若使用超用宣告陣列的數目,很容易發生違規存取,但至於發生在哪裡,確不得而知了...
所以要配置大於或剛好的陣列數呀!!
ps.稍微看了一下,並沒很認真的除錯,請自己除錯吧~:D 發表人 - jest0024 於 2005/06/04 19:53:53
|
shunaarom
一般會員 發表:8 回覆:34 積分:18 註冊:2003-07-02 發送簡訊給我 |
引言: [cdoe] 1.ed1,ed2,ed3:array[0..20] of Tedit; //<--ed3宣告0~20個陣列 2. var i:integer; t:textfile; begin vt:=TStringList.Create; vt.LoadFromFile(Edit1.Text); st:=TStringList.Create; If CheckBox1.Checked Then Begin For tc := 0 to vt.Count-1 Do //<--若vt.Count大於20 Begin If (ed3[tc].Text='') Then //<--ed3的陣列是乎是超過20個以上了!! Begin Check(Sender); End Else Begin End; [/code] If (ed3[tc].Text='') Then //<--ed3的陣列是乎是超過20個以上了!! 就如大大所說的~錯在這~ 其他的都可以~~ 以給分數了~對不起這位大大了囉!!>"< 若使用超用宣告陣列的數目,很容易發生違規存取,但至於發生在哪裡,確不得而知了... 所以要配置大於或剛好的陣列數呀!! ps.稍微看了一下,並沒很認真的除錯,請自己除錯吧~:D 發表人 - jest0024 於 2005/06/04 19:53:53 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |