Entwickler-Ecke

Programmierwerkzeuge - Compiler erzeugt absoluten Murks!!!


Andreas Pfau - Fr 14.05.04 20:58
Titel: Compiler erzeugt absoluten Murks!!!
Hallo,

kein Witz, ich weiß, man hat oft das Gefühl der Compiler will einen nur ärngern, aber diesmal ist es Fakt!!!

Also, ich habe ein Form mit mehreren Kompos, betroffen sind eine Combo und eine PaintBox. Wenn man die Kompo ändert wird der Index ausgelesen und Variablen gesetzt. Beim Klick auf einen Button wird was in die Box gezeichnet.

So, jetzt wirds lustig. Zur Laufzeit, klicke ich auf den Button, und beim ersten Zeichenbefehl kommt eine AccessViolition (nicht bei null). Das Gleiche wenn ich was aus der Box auswähle, Zugriffsverletzung im Code beim holen des ItemIndex.

Was kann man tun? Ich setze eine weitere ComboBox aufs Form, irgendwo, hauptsdache im Form ist noch ne Combo. Neu compilieren - -> alles 100% Fehlerfrei.

Was kann das sein? Die neu erzeugte Combo wird nirgends im Code aufgerufen (sonst lönnte man es ja gar nicht kompilieren), außerdem tut der Painbox-Code auch, obwohl der GAR NICHTS mit der Combo zu tun hat.

Tja, warscheinlich bin ich der einzieg mit einem so *coolen* Delphi, aber ich wäre trotzden froh, wenn mir einer von euch helfen könnte, das bringt mich noch mal zu Verzeweiflung :cry:

Moderiert von user profile iconTino: Titel geändert.


NetZwerg - Fr 14.05.04 21:45

kannst das projekt ja mal jemandem geben! hast du webspace? dann könntest du's hochladen. wenn nich schick mir ne pn, ich geb dir meine email und dann lade ichs hoch. klingt aber recht merkwürdig... :roll:


mstuebner - Fr 14.05.04 22:00
Titel: Re: Hilfe - Compiler erzeugt absoluten Murks!!!
Andreas Pfau hat folgendes geschrieben:
Tja, warscheinlich bin ich der einzieg mit einem so *coolen* Delphi, aber ich wäre trotzden froh, wenn mir einer von euch helfen könnte, das bringt mich noch mal zu Verzeweiflung :cry:

Ich konnte bereits öfters feststellen, dass Access Violations auf einmal weg waren, wenn ich ohne jegliche zusätzliche Änderung einen Komplettbuild gemacht habe, statt einfach Run.


Andreas Pfau - Fr 14.05.04 22:03

Hallo,

OK, hier: http://www.delphistuff.gmxhome.de/Downloads/AvrLcdSender.zip

Es handelt sich um den Update-Button, der die LCD-Vorschau rendert, sowie die beiden Panels für Userfarben und die Combo für Farbpresets. Der ASCII-Editor tut anstandslos (na ja, manchmal wird das Label nicht aktualisiert, auch so ne Macke).

Im Moment geht es - mit dem Pseudo-ColorDialog und der Pseudo-Combo. Wenn ich sie wegmache tuts nicht mehr (Accessvioloition). glaube kauem dass dein Compiler genauso verfährt, aber wenn doch hätten wir immerhin einen Bug entdeckt...

Wie gesagt - ich komme mir oft veralbert vor und finde nach Stunden den Fehler - aber das kanns nicht sein, das ist DEFINITIV ein Compilerfehler!!!


Andreas Pfau - Fr 14.05.04 22:14

Hallo,

habe das Archiv aktualisiert - die DAT war nicht dabei, ohne die wirkt das Prog villeicht erinwenig sinnlos, funzt aber trotzdem.

Egal, also, wegen dem Build: alles porbiert. Auch mal alle Compiler-Files gelöscht, d.h. alles außer DPR, PAS und DFM und dann neu compiliert -> das gleiche.

Irgendwie scheint es als ob der Compiler zu wenig Speicher für die Kops reserviert, was man durch hinzufügen einiger Fake-Kompos kompensieren kann (meine Theorie).

Na ja, villeicht sollte ich mir mal n Wochenden Zeit nehmen und mal wieder den guten alten Format C ausprobieren... hab ich schon lange nicht mehr... klar, auf meinem System ist ein haufen Schrott der runtergehört, und ich eh mal wieder nen Frühjarsputz machen sollte, aber dass deswegen SOLCHE Fehler kommen???


GSE - Fr 14.05.04 22:29

Weiß nich tob´s viel hilft, aber:
Hab´s mal runtergeladen und getestet (mit und ohne "Sinnlos"-Combo) und bei mir läufts sauber durch, also ohne Zugriffsverletzungen.
Hab D6 Enterprises, vielleicht ist der "Fehler" ja versionsabhängig?

mfg
GSE


Andreas Pfau - So 16.05.04 14:44

Hallo,

meine Vermutung ist dass an meinem System bzw der Delphi-Installation was oberfaul ist. Aber villeicht hatta ja mal jemand das gleiche Problem und weiß Rat... :(

Na ja, was solls, irgendwann muss ich die Platte eh mal wieder runterschmeißen und alles neu drauf, muss wohl so ne Windows-acke sein dass das ständig nötig ist, tja, solange werde ich wohl meine Fake-Combos brauchen *g*


Motzi - So 16.05.04 14:46

Stell mal eine solche fehlerhafte Exe zum download.. würd mich wirklich interessieren, denn eine von mir kompilierte Exe deiner Source hat problemlos funktioniert..!


GSE - So 16.05.04 14:53

Andreas Pfau hat folgendes geschrieben:
Na ja, was solls, irgendwann muss ich die Platte eh mal wieder runterschmeißen
Wenn du die Platte immer runterschmeißt kann die ja nur kaputt gehen, ist doch sensible Elektronik :twisted:

mfg
GSE


Andreas Pfau - So 16.05.04 15:07

Hallo,

die EXE ist langweilig, nur ne Zugriffsverletzung, laut Debugger an der Stelle wo ich auf die Kompo zugreife. Keine An Adresse null, sondern schon irgendne Adresse, aber halt dennoch kaum nachvollziehbar, wie immer.

Aber OK, das Archiv ist aktualisiert, die EXE ist drin (nur die fehlerhafte). Aber leider trotzdem nicht so dolle - nun macht er die Combo richtig, aber beim Color-Dialog macht er ne AccesViolition. Der Compiler macht halt eh was er will. Hab jetzt keinse Lust so lange neu zu kompilieren bis der Alte Fehler wiederkommt, aber klickt einfach auf die beiden Panels, dann kommt der fehler.


Zitat:
Wenn du die Platte immer runterschmeißt kann die ja nur kaputt gehen, ist doch sensible Elektronik

Ich lass sie ja nur mit der spitzen Seite auf den Löschmagneten fallen :wink:


AndyB - Di 18.05.04 13:49

Dein Compiler macht alles richtig. Nur du hast da einen Fehler im Code.


Delphi-Quelltext
1:
2:
3:
CurrentCharIndex := -1;
...
Chars[CurrentCharIndex] := CurrentChar;

Man sollte auf ein Array nicht mit -1 zugreifen, denn damit überschreibst du die Variable/Feld, das vor dem Array deklariert ist. Und das ist in deinem Fall eben die Komponente.


Andreas Pfau - Di 18.05.04 18:54

Hallo,


ja, du hast Recht - es löst EIN Problem, aber nach wie vor kommt der Fehler. Und nach wie vor lässt er sich aushebeln indem ich eine "Fake-Kompo" einbaue... und warscheinlich kommt er nach wie vor bei den Andern Forenmitgliedern nicht. Und er kommt ja seltsamerweise auch erst dann wenn ich auf eine Kompo zugreife, nicht beim CurrentCharIndex.

Tja, trotzdem Danke für den Tipp, ein Bug weniger. Habe mich inzwischen damit abgefunden, dass irgendwas an System lose ist.


AndyB - Di 18.05.04 21:21

Andreas Pfau hat folgendes geschrieben:
Hallo,
Habe mich inzwischen damit abgefunden, dass irgendwas an System lose ist.


Ich glaube eher das dein Code nicht in Ordnung ist. Am besten aktivierst du mal die Bereichsüberprüfung und die Überlaufprüfung (Projekt/Optionen/Compiler). Da kann dir einige solcher Fehler recht schnell erkennen. Wenn das Programm dann funktioniert, kannst du die beiden Häkchen ja wieder entfernen.


Andreas Pfau - Mi 19.05.04 17:31

Hallo,

nee, keine Fehler (Ok, bevor ich teinen tipp angewandt habe schon). aber wenn ich es neu kompilier kommt mal der fehler mal net... es sei denn ich setz diese kompo rein... alles dreht sich im kreis...


AndyB - Mi 19.05.04 17:45

Wenn der Compiler einen solchen Fehler hätte, würde er erstens dauernd auftreten und zweitens hätten den 100%-tig schon mehrere gefunden und an Borland gemeldet.
Überprüfe am besten noch mal deine Arrays und sonstige Speicherzugriffe. Der Compiler macht nur das, was du ihm sagst.


Wie hast du denn obigen Index-Fehler behoben?


Andreas Pfau - Mi 19.05.04 19:35

Hallo,

ich sag doch, es kommt mal und mal nicht! warum glaubt mir keiner? sag mir bitte wie man einen zugriffsfehler vermeiden kann indem man eine kompo aufs form zieht!

egal, fakt ist, es kommen 4 arbeitsfreie tage, bis dahin ist die platte leer, dann kommt alles neu druaf. dann kompilier ichs nochmal und dann ist gut (hoffen wirs...)

den fehler habe ich behoben indem ich den index auf -1 prüfe (er muss anfangs -1 sein, da er ja praktisch dazu dient das aktuelle char zu sichern).

also, trotzdem mal danke an alle. ich sage bescheid wenn nach meiner radikalkur der fehler immer noch kommt - dann hast du recht gehabt.


Andreas Pfau - Do 20.05.04 12:53

Hallo,

juhu, es funzt wieder!!! Delphi neu drauf, alles OK... Habs x-mal kompiliert, jedesmal fehlerfrei.

Muss dir (AndyB) aber trotzdem Recht geben - Wenn ich das mit dem "-1" nicht mii "if" nachprüfe, kommt nach wie vor ein Zugriffsfehler (sollte ja auch so sein).

Aber woran das andere lag, der Zugriffsfehler beim Canavs und so, dass weiß ich immer noch nicht :( habe sicherheitshalber mal das Delphi-Update 7.1 installiert.

Nochmals vielen Dank an alle beteiligten! :D