Avatar billede mmfrandsen Nybegynder
13. december 2003 - 20:52 Der er 14 kommentarer og
1 løsning

Den samme procedure to gange = fejl?

Jeg har to procedures, der ser sådan her ud:

procedure TForm2.SpeedButton1Click(Sender: TObject);
var
sl : tstringlist;
strs : tstrings;

begin
listbox1.Items.Add(edit1.Text);
sl := tstringlist.Create;

try
sl.LoadFromFile('Addresses.txt');
strs := ListBox1.Items;
strs.SaveToFile('Addresses.txt');

Finally
sl.free;
strs.Free;


procedure TForm2.SpeedButton2Click(Sender: TObject);
var
sl : tstringlist;
strs : Tstrings;

begin
listbox1.Items.delete(listbox1.ItemIndex);
sl := tstringlist.Create;

try
sl.LoadFromFile('Addresses.txt');
strs := ListBox1.Items;
strs.SaveToFile('Addresses.txt');

Finally
sl.free;
strs.Free;


Den første er til, at lægge det jeg skriver i Edit1 (EditText) ind i ListBox1 (ListBox).
Den anden er til, at fjerne den valgte linje fra ListBox1.

Begge procedures virker fint, men lige så snart jeg har brugt én af dem bare én gang, vil det ikke virke mere. Er der nogen, der ved hvorfor?

På forhånd tak, MM
Avatar billede doc404 Novice
13. december 2003 - 21:49 #1
Hvorfor bruger du ikke bare ListBox1.Items.LoadFromFile() og ListBox1.Items.SaveToFile() ?

I begge loader du addresses.txt til sl til ingen verdens nytte?
Avatar billede mmfrandsen Nybegynder
13. december 2003 - 21:52 #2
Det kaldes uvidenhed :p

Tak for det... Men du ved ikke hvorfor det går galt?
Avatar billede fixxxer Nybegynder
13. december 2003 - 22:55 #3
hvilken slags fejl er der tale om?
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 11:07 #4
"Project MMClient.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'. Process stopped. Use Step or Run to continue."
Avatar billede Slettet bruger
14. december 2003 - 11:13 #5
Skal man ikke skrive strs := TStrings.Create; før man kan bruge TSTrings??
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 11:29 #6
Åbenbart ikke... Den virker nemlig fint. Det giver bare først problemer, når jeg bruger den anden gang.
Avatar billede Slettet bruger
14. december 2003 - 11:33 #7
Hmm... måske er det fordi du frigiver strs uden det er oprettet, måske virker det hvis man fjerner strs.Free;
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 11:38 #8
Jeg fik det til at virke nu :)

Jeg ændrede det hele til:

procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
listbox1.Items.Add(edit1.Text);
form1.edServer.Clear;
form1.edServer.Items.AddStrings(listbox1.Items);

try
ListBox1.Items.SaveToFile('Addresses.txt');

Finally

end;
end;


procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
listbox1.Items.delete(listbox1.ItemIndex);
form1.edServer.Clear;
form1.edServer.Items.AddStrings(listbox1.Items);

try
ListBox1.Items.SaveToFile('Addresses.txt');

Finally

end;
end;

Jeg brugte lidt hjælpen fra doc404 og hejhej... Så hvis i begge to laver et svar, så skal jeg nok acceptere dem ;)
Avatar billede Slettet bruger
14. december 2003 - 11:41 #9
Svar :)
Avatar billede Slettet bruger
14. december 2003 - 12:21 #10
Skulle doc404 ikke også have point??? :S
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 12:26 #11
Kan jeg ikke også bare acceptere hans svar (når det kommer)? Eller er det umuligt?
Avatar billede Slettet bruger
14. december 2003 - 12:32 #12
Det kan man ikke, men opretter lige et spm med point til ham :)
Avatar billede doc404 Novice
14. december 2003 - 12:44 #13
Du SKAL altid create dine objekter - at det virkede er et rent tilfælde...
Avatar billede fixxxer Nybegynder
14. december 2003 - 13:11 #14
ja det virker lidt mærkelige at du kunne bruge dem uden at de var created. jeg ville også mene at TStringList er bedre at bruge fremfor TStrings, da jeg selv har oplevet problemer med TStrings.
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 14:23 #15
Tjaa... Jeg brugte også TStringList (som jeg createde) først, men der opstod en fejl da jeg brugte TStringList med min ListBox, så jeg udskiftede den med TStrings. Jeg anede bare ikke at man også skulle create TStrings, så da det virkede uden at jeg createde, tænke jeg selvfølgelig ikke over det.
Men tak for rådet alligevel - Jeg vil huske det til næste gang ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester