Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Seltsame Fehler in Delphi (https://www.delphipraxis.net/48384-seltsame-fehler-delphi.html)

oXmoX 29. Jun 2005 12:53

Re: Seltsame Fehler in Delphi
 
Ok ...geht mit Windows.TBitmap oder Graphics.TBitmap ...habs verstanden


Edit: ...und war zu langsam ;)

MaBuSE 29. Jun 2005 13:50

Re: Seltsame Fehler in Delphi
 
Zitat:

Zitat von oXmoX
Mit "seltsamen" Fehlern meine ich z.B. folgendes:
  • 1) Ich vertausche zwei Zeilen im Quellcode und plötzlich verschwindet irgendwo in einem TMainMenu ein Eintrag. Anstelle des Eintrags wird nur ein leeres Feld gezeichnet.
  • 2) Ich Rufe eine OpenCV-Routine zur Detektion von Punkten auf einem Schachbrett auf, doch es werden keine Punkte gefunden. Darauf entferne ich an ganz anderer Stelle im Programm einen TButton oder ein TPanel von der GUI und auf einmal kann die OpenCV-Routine alle Punkte finden ...im selben Bild! Der TButton bzw. das TPanel hat jedoch mit Sicherheit nichts mit dieser Funktion zu tun. :(
Ich könnte jetzt noch andere Fehler nennen. Das lasse ich aber, weil ich dazu weiter ausholen müsste und alle Fehler einen ähnlichen Charakter, wie die beiden obigen haben.

Solche "lustigen" Fehler können auch eine ganz andere Ursache haben.

mschaefer hat es eigentlich schon angesprochen.
Zitat:

Zitat von mschaefer
also zunächstmal dürfen keine DCU´s gleichen Namens im Suchpfad sein Zwischendurch am besten mal alle löschen.

Ein weiterer Punkt ist, das Delphi eine eigene Logik hat festzustellen, ob eine *.pas kompiliert werden muss oder nicht. Es ist leicht Möglich, das Delphi "alte" *.dcu Dateien verwendet, und dadurch seltsame Fehler entstehen. Wenn er nun "merkt" Huch ich muss neu kompilieren, macht er es "richtig" Das kann eine "sinnlose" Änderung wie 2 Zeilen vertauschen sein.

Ich empfehle Dir deshalb für Dein Projekt folgende dinge zu beachten.
  1. lösche alle *.dcu Dateien die nicht zu Delphi gehören und zu denen zu *.pas Dateien hast.
    Tip: [Win+F] Dateisuche -> *.dcu suchen (Vor allem unit1.dcu, unit2.dcu, ... löschen)
  2. In den Projektoptionen unbedingt den Pfad für "Ausgabe für Units" aus ein Verzeichnis z.B. C:\TEMP\ProjektName\dcu
  3. In den Projektoptionen unbedingt den Pfad für Suchpfad möglichst klein halten am besten leer.
  4. Nach Änderung der Projektoptionen unbedingt das Projekt speichern.
  5. Dann Menü "Datei -> Alle schließen" ausführen und nochmals in die Projektoptionen gehen.
  6. In den Projektoptionen unbedingt den Pfad für "Ausgabe für Units" auf ein Verzeichnis z.B. C:\TEMP\ToBeDeleted\dcu
  7. In den Projektoptionen unbedingt den Pfad für Suchpfad leeren.
  8. In den Projektoptionen unbedingt bei [X] Vorgabe ankreuzen und OK drücken.
    Damit werden für alle Projekte die *.dcu Dateien in C:\Temp\ToBeDeleted\dcu geschrieben, mit Ausnahme derer, die Du umdefinierst (s.o.)
  9. Statt Compile unbedingt immer Build benutzen (Menü "Projekt -> Projekt1 erzeugen")
Wenn nun Probleme auftreten, kannst du einfach das dcu Verzeichnis löschen.

Damit sollten Deine Probleme erledigt sein.

oXmoX 29. Jun 2005 15:13

Re: Seltsame Fehler in Delphi
 
Zitat:

Zitat von MaBuSE
Damit sollten Deine Probleme erledigt sein.

Danke für die ausfühliche Antwort.

Z.Zt. sind die Fehler - als Folge eines kleinen Refactorings - sowieso nicht mehr vorhanden. Meine Klassen sind jetzt insgesamt etwas kleiner (vorher hatten einige Klassen locker über 1000 Zeilen), mein Heap ist sauber (dank MemProof) und die uses-Abschnitte enthalten keine unnötigen Referenzen (dank Icarus). Außerdem habe ich Abhängigkeiten, die ich nicht unbeding benötige entfernt (z.B. ein DirectX-Filter zum Skalieren des Bildes).
Wie gesagt: wenn ich den Umfang reduziere verschwinden die Fehler. Aber ich befürchte trotzdem, dass sie zurückkommen. Daher mache ich ja grad diese große Aufräumaktion.

Deine Vorschläge hab ich mir mal zu Herzen genommen. Meine dcu's landen jetzt in einem Sonderverzeichnis, dass regelmäßig gelöscht wird. Mal sehen ob's was bringt. Wenn ich Glück habe taucht der Fehler ja auch nicht wieder auf.

Gruß,
oXmoX

oXmoX 30. Jun 2005 10:31

Re: Seltsame Fehler in Delphi
 
...und noch eine Frage:

In einem Der C-Header-Files, die ich für Delphi umgesetzt habe steht die Zeile

Code:
#define IPL_DEPTH_SIGN 0x80000000
IPL_DEPTH_SIGN wird in den nachfolgenden Zeilen dann als "int" verwendet.
In meiner .pas Datei mache ich daraus...

Code:
const
  IPL_DEPTH_SIGN: Integer = $80000000;
...und bekomme vom Compiler die Warnung
"Konstantenausdruck verletzt untere Grenzen".
Mache ich was falsch? Sollte mich die Warnung kratzen?

Gruß,
oXmoX

marabu 30. Jun 2005 11:20

Re: Seltsame Fehler in Delphi
 
Integer($80000000) ist nicht gut - das high bit ist das Vorzeichen - du definierst da (-0) und das mag der Compiler wohl nicht. Geht nicht Cardinal?

marabu


oder DWORD...

NicoDE 30. Jun 2005 11:59

Re: Seltsame Fehler in Delphi
 
Zitat:

Zitat von oXmoX
Code:
const
  IPL_DEPTH_SIGN: Integer = $80000000;

$80000000 ist kein portabler Integer-Ausdruck.
Laß den Typ ganz weg und entscheide bei der Verwendung ob ein Cast wirklich nötig ist.

Luckie 30. Jun 2005 12:00

Re: Seltsame Fehler in Delphi
 
Für eine neue Frage bitte einen neuen Thread erstellen. Das hier hat wohl nichts mehr mit deinem ursprünglichen Problem zu tun.

oXmoX 30. Jun 2005 13:29

Re: Seltsame Fehler in Delphi
 
Zitat:

Zitat von marabu
das high bit ist das Vorzeichen - du definierst da (-0)

Heißt das etwa $80000000 or 42 = -42?
Wenn dem so ist, dann brauche ich diese Konstante nicht wirklich.

@Luckie: Sorry, kommt nicht wieder vor :wink:

Edit: Hat $FFFF0000 eigentlich auch eine besondere Bedeutung? ...da schimpft der Compiler nämlich auch.

Edit2: Klar schimpft er da ...das high-bit ist ja auch wieder gesetzt. :?

Luckie 30. Jun 2005 13:36

Re: Seltsame Fehler in Delphi
 
Zitat:

Zitat von oXmoX
@Luckie: Sorry, kommt nicht wieder vor :wink:

Dann halt dich auch bitte dran und mach ein neues Topic auf!

oXmoX 16. Jul 2005 09:56

Re: Seltsame Fehler in Delphi
 
O.K., ich schätze mein Problem hat sich erledigt. "Die Fehler" sind nun schon seit Wochen nicht mehr aufgetaucht :-D und mein Programm ist fast fertig. Ich nehme an, es lag an einem Fehler bei der Speicherfreigabe eines Pointers (dank Memproof gefunden).

Nocheinmal vielen Dank an alle, die geholfen haben.

Gruß,
oXmoX


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz