| Autor |
Beitrag |
the-kecks
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: Sa 07.03.09 22:09
hi, ich schon wieder^^
ich habe mal wieder ein problem. bei mir kommt immer eine EAccessviolation bei einer pos abfrage obwohl das in eine stringlist geladene file was mittels pos durchsucht wird existiert und die stringlist korrekt geladen/createt worden ist -.-
Debugger:
Erste Zufalls-Exception bei $7555F35F. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 7683787C in Modul 'RPCRT4.dll'. Schreiben von Adresse BE6606E4'. Prozess Project1.exe (4752)
code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure TForm1.Button1Click(Sender: TObject); var filetxt : Tstringlist; i2 : Integer; str : String; begin Dateipfad:=edit1.Text; str:=edit2.Text; filetxt:=TStringList.Create; if pos('.txt', Dateipfad) >0 then begin if FileExists(Dateipfad) then begin filetxt.LoadFromFile(Dateipfad); for i2:=0 to filetxt.count do if pos(str, filetxt[i2]) >0 then begin antwort:=edit2.text; filetxt.free; end else begin antwort:='NG'; Filetxt.free; end; end; end else begin showmessage('Datei wurde nicht gefunden!'); exit; end; |
mfg
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Sa 07.03.09 22:18
Hallo
es muß
Delphi-Quelltext 1:
| for i2:=0 to filetxt.count-1 do |
Delphi-Quelltext 1:
| if pos(str, filetxt[i2]) >0 then |
jain,
Du gibst die stringliste immer wieder frei -> beim nächsten Schleifendurchlauf ist sie nicht mehr existent und führt zur AV.
Das free gehört ans Ende (wo du nicht mehr auf die Stringliste zugreifst ) und in einen try-finally-Block. Von der struktur her kannst du auch auf das exit verzichten.
deine Einrückung zum letzten else-Zweig ist für mich nicht vorteilhaft.
Gruß Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
the-kecks 
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: Sa 07.03.09 22:50
danke! aber jetz kriege ich "listenindex überschreitet das maximum(0)" obwohl doch eigentlich alles korrekt geladen wurde (oder?).
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| if pos('.txt', Dateipfad) >0 then begin if FileExists(Dateipfad) then begin filetxt.LoadFromFile(Dateipfad); for i2:=0 to filetxt.count-1 do if pos(str, filetxt[i2]) >0 then begin antwort:=edit2.text; end else begin antwort:='NG'; end; end; end else begin showmessage('Datei wurde nicht gefunden!'); exit; end; |
PS: es funzt auch ohne -1
mfg
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Sa 07.03.09 23:10
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 07.03.09 23:15
the-kecks hat folgendes geschrieben : | | danke! aber jetz kriege ich "listenindex überschreitet das maximum(0)" |
Das heißt, dass der Index 0 schon höher als der maximale Index ist. Also ist kein Eintrag in der StringList.
|
|
the-kecks 
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: Sa 07.03.09 23:24
ja das ist mir klar aber ich habe das file doch auf jedenfall geladen weil ich ja das mit "if FileExists(Dateipfad) then" eingefügt hab.
mfg
|
|
the-kecks 
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: So 08.03.09 01:26
hab das problem selbst gelöst
mfg
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: So 08.03.09 02:56
the-kecks hat folgendes geschrieben : | | hab das problem selbst gelöst |
Darf man fragen was "geklemmt" hat. U.U. hat jemand anderes ein ähnliches Problem.. Du wärst auch froh, wenn Du die Lösung zu Deinem Problem über eine simple Suchanfrage im Forum gelöst bekommen würdest, oder? Dann hilft ein Beitrag wie "OK, hat sich erledigt, funzt" nicht wirklich...
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
the-kecks 
      
Beiträge: 157
Erhaltene Danke: 1
Windows Vista Home Premium 64Bit
Delphi 7 Ent.
|
Verfasst: So 08.03.09 03:23
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: So 08.03.09 03:47
Muchas Gracias!
Tja, was eine ordentliche Code-Formatierung (oder gExperts) alles aus macht. Da sieht man ein fehlendes end auf den ersten Blick.
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.03.09 04:46
|
|