Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: File Access: EAccessViolation

  Alt 11. Jan 2007, 11:44
So, ich hab mal kurz drübergeschaut. Aber aufgrund fehlender Zeit konnte ich nicht viel machen.

1. "Application.Terminate": das ist wie aus dem fahrenden Auto springen. Einfach das Hautpformular schließen ist schöner (so mit anhalten, Motor aus, aussteigen und abschließen) --> Application.terminate durch einfaches "close" ersetzen.

so und jetzt zu deiner Funktion
2.1. Der Fehler tritt bei WerteAlt[0]='0' auf. WerteAlt ist ein TStringDynArray (also array of string), also ein dynamisches Array. Schau dir an, wie dynamische arrays funktionieren (mit: setlength, finalize, copy). Fürs erste reicht es davor ein "setlength(WerteAlt,1);" zu setzen.
2.2. Dann ist er bei mir rausgeflogen bei "strtofloat(Werteneu[0])". Das lag daran, dass er bei mir als Dezimaltrennzeichen ein "," erwartet hat und nur einen "." finden konnte (also mit dem Punkt nix anzufangen wusste). Hier kann man mit TFormatsettings was machen.
2.3. Das nächste Problem liegt hier WerteAlt:=WerteNeu funktioniert nicht so, wie du es willst. Das sind beides dynamische arrays, also in erster Instanz nur Zeiger. Du kopierst also nur die Adresse aber nicht den Inhalt (ist wie, als würdest du deinem Kunpel alle deine Möbel schenken wollen, stattdessen ziehst du bei ihm ein). Mach mal so: "WerteAlt:=copy(WerteNeu)"

Soviel zu den offensichtlichen Dingen

Jetzt willst du noch Werte sortieren. Dann mach die mal mit TStringList vertraut (inkl Loadfromfile).

Was du mit Werte errechnen meinst, weis ich nicht.

Noch etwas: Es wäre nicht schlecht wenn du die Funktion aus dem Timer in einen eigenen Thread legen könntest (such mal nach TThread).

Mehr will ich nicht meckern
Nur bei manchen Sachen hab ich mir gedacht, dass man die PRogrammierweise nochmal näher durchleuchten sollte. Mir fehlt aber die Zeit.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat