![]() |
Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Hallo Allerseits!
was mache ich falsch, wenn Teile des Quellcodes vom Compiler nicht compiliert werden? Normalerweise drücke ich "strg + F9" und der gesamte Quellcode wird compiliert. An den blauen Punkten auf der linken Seite erkennt man ja, welche Zeilen vom Compiler berücksichtigt wurden. Der Compiler meldet keinen Fehler beim copilieren. Aber nur das letzte "end" erhält den blauen Punkt. Habt ihr eine Idee? |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Existiert ein Projekt?
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Der Compiler ignoriert u.U. Zeilen, die "nutzlos" sind.
Delphi-Quellcode:
wird u.U. ignoriert, wenn I nicht mehr verwendet wird.
I := 0;
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Damit alle notwendigen Dateien erzeugt werden, gehe ich immer so vor, dass ich auf "\Datei\Alles speichern" klicke. Delphi fragt dann zuerst nach dem Unitnamen und danach nach dem Projektnamen und speichert die Dateien ab. |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Das kann wiederum nicht sein. Aber vielleicht ist bei der Vorgehensweise etwas schief gelaufen. Ich habe zunächst einen Quellcode erzeugt und diesen erfoglreich ausprobiert. Nun bin ich dabei, diesen Quellcode in eine eigene Unit in eine Klasse zu verfrachten. Und damit trat das beschriebene Problem auf. |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Schau mal, ob Du noch eine alte pas oder dcu herumliegen hast, die der Compiler verwendet. Ich hatte das früher auch mal, dass ich im Editor eine pas in Arbeit hatte, der Compiler aber noch eine ältere Kopie benutzt hat. Das führte zu ähnlichen Effekten. Ansonsten zeig mal einen Quelltext... |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
funktioniert Projekt erzeugen statt kompilieren..?
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Das ändert nichts. Die "blauen Punkte" fehlen nach wie vor. |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Was passiert denn wenn du absichtlich einen Fehler einbaust? Meckert der Compiler dann?
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Meine Vermutung: Du (FriendOfDelphi) hast beim Aufteilen in eine andere Unit den Code irgendwie KOPIERT anstatt zu VERSCHIEBEN. Klammere doch einfach die Codezeilen aus, die keine blauen Punkte bekommen haben. Wenn das Projekt dann immer noch kompiliert werden kann (ich wette ein 2. Bier, daß JA), dann kommst Du der Sache schon näher... Gruß blauweiss |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Es gibt im Grunde nur 3-4 Gründe, warum diese Punkte fehlen.
- es gibt einen Fehler im Quellcode (es konnte nicht kompiliert werden, aber da meckert der Compiler ja rum) - die Funktionen/Befehle werden nirgendwo aufgerufen (was man nicht verwendet, das wird nicht mit einkompiliert) - die ganze Unit wird nicht verwendet (könnte auch sein, daß eine andere Unit stattdessen genommen wird) > dieses läßt sich rausbekommen, indem man mal einen Fehler in den Code einbaut (wie's auch schon gesagt wurde) - oder man hat die Debuginformationen deaktiviert (entweder für die entsprechenden Codesstellen oder im gesammten Projekt) > ohne Debuginfos fehlt eine Zuordnung zwischen Quelltext und kompiliertem Code So, und nun mußt du nur noch rausbekommen, welcher dieser Punkte bei dir zutrifft. |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Blauer Punkt beim "end" -> die Unit wird im Projekt mitkompiliert. Keine blauen Punkte sonstwo in dieser Unit -> der Code wird nicht aufgerufen (weil z.B. die Klasse nirgendwo im Projekt instanziiert wird). Gruß blauweiss |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Zitat:
In einer zweiten, zunächst einmal nur Test-Unit, wird dann ein Objekt der Klasse instanziiert und die Methode "Create" beim Erzeugen des Formulars und "Destroy" beim Auflösen des Formulars verwendet (die beiden Methoden aus dem "public-Bereich"). Mehr mache ich erst einmal nicht. Beim Aufrufen des Programms wird aber folgender Fehler angezeigt: "Im Projekt Soundso.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0043E34B in Modul 'Soundso.exe'. Lesen von Adresse 00000000'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen." Zitat:
Zitat:
Zitat:
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Aber ich instanziiere in einer zweiten Test-Unit ein Objekt der Klasse. Wahrscheinlich mache ich hier, bzw. im Konstruktor etwas falsch. |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Gar nichts, außer vielleicht zu sagen, in welcher Art und weise ich ihn senden soll. Möchte mir nicht wieder einen "Rüffel" holen, dass ich irgendetwas falsch gemacht habe und unwissentlich gegen irgendwelche Forumsregeln verstoßen habe. :? Dafür ist mir das hier zu wichtig. Hier im Forum herrscht ein gewisses Niveau vor, das woanders nicht so ist und ich daher nicht missen möchte. Das Programm besteht, wie gesagt aus zwei Units. Soll ich es als ZIP-Datei anhängen, oder beide Quellcodes als Text senden? |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Hier Teile der "Test-Unit":
Delphi-Quellcode:
Hier Teile der eigenen Unit:
[...schnipp...]
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, UNotifikationen; //<-- die verwendete, eigene Unit [...schnipp...] var Form1: TForm1; Test: TNotifikationen; //<-- die verwendete Klasse aus eigenen Unit [...schnipp...] procedure TForm1.FormCreate(Sender: TObject); //<-- und die beiden Methoden aus der Klasse begin Test.Create(self); end; procedure TForm1.FormDestroy(Sender: TObject); begin Test.Destroy; end; end.
Delphi-Quellcode:
Ist das so nachvollziehbar und ein Fehler erkennar?
[...schnipp...]
type TNotifikationen = class(TWinControl) procedure WMAdsDeviceNotificationSRr( var Message: TMessage ); message WM_ADSDEVICENOTIFICATIONSRr; private { Private-Deklarationen } LocalAddr : TAmsAddr; procedure AdsOpen(); procedure AdsClose(); public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; destructor Destroy; end; [...schnipp...] procedure TNotifikationen.AdsOpen(); var VarName : PChar; begin [...tue irgendwas ...] end; [...schnipp...] procedure TNotifikationen.AdsClose(); begin [...tue irgendwas ...] end; [...schnipp...] constructor TNotifikationen.Create; begin AdsOpen(); end; destructor TNotifikationen.Destroy; begin AdsClose(); end; [...schnipp...] |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Eine Instanz einer Klasse erstellt man so:
Delphi-Quellcode:
obj := TMyClass.Create;
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Die Instanz einer Klasse weist man so zu:
Delphi-Quellcode:
Test := TTest.Create(Self);
Im Create und Destroy Deiner Komponente fehlen das inherited. Sie wird also nicht erzeugt und nicht aufgelöst. Hinter Deinem Destructor fehlt das override. Die Freigabe der Komponente (im FormDestroy) sollte man über Test.Free veranlassen. (Bzw. kann diese Freigabe an der Stelle entfallen, da das Formular Deine Komponente als deren Eigentümer automatisch frei gibt.) Schau mal, ob Dich das schon weiter bringt... |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Die Quellcode in der Unit wird jetzt vollständig mitkompiliert und die "blauen Punkte" sind da! :-D |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
Zitat:
Zitat:
Heißt das, dass ich gar keinen Destruktor selber machen muss? |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
inherited ruft die gleichnamige Methode der Vorfahrklasse auf. Und den Destruktor musst Du nur überschreiben, wenn Du selbst Speicher anforderst (z.B. indem Du Instanzen von Klassen erzeugst) und diesen beim Zerstören wieder freigeben musst. Aber Vorsicht: im Destruktor gehört das inherited immer in die letzte Zeile.
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Free ruft intern Destroy auf. Destroy sollte man nicht direkt aufrufen.
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Ihr seid echt super. Vielen Dank.
Jetzt geht es ins "Eingemachte" meiner Umwandlung von "Stand-Alone-Programm" in eigene Unit/Klasse. Ich habe jetzt eine neue Fehlermeldung; bin mir aber nicht ganz sicher, ob ich dafür ein neues Thema aufmachen soll, oder nicht, da das ürsprüngliche Thema ja abgeschlossen ist... Was sagt denn der Moderator dazu? |
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Auch wenn ich kein Mod bin: neue Frage, neuer Thread ;)
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Zitat:
|
AW: Quellcode wird nicht compiliert. Compiler meldet keinen Fehler.
Ich habe dazu unter "\Delphi-PRAXiS\Sprachen und Entwicklungsumgebungen\Object-Pascal / Delphi-Language" ein neues Thema "Aufgerufene Methode erkennt aufrufendes Objekt nicht" eröffnet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz