![]() |
Warum kompiliert Delphi diesen Codeabschnitt nicht???
Hallo,
folgende Codedeklaration(steht alles in einer Unit):
Delphi-Quellcode:
Wenn ich das Projekt kompiliere, wird keine Fehlermeldung ausgegeben, aber es wird nicht der Inhalt der Prozedur von TsicherungCad.kontrolle compiliert. irgendwie ignoriert der Compilier den Code. Ich erkenne es folgendermaßen: Wenn ich in der Zeile, wo exit steht, einen Haltepunkt setzen will, ist in dem roten Kreis ein gelbes Kreuz. Wenn es vom Kompilier erkannt wurde als auszuführenden Code, dann ist in Delphi 5 (benutze ich) immer noch ein blauer Punkt neben der Zeile, was hier nicht der Fall ist. Nun meine Frage, wie schaffe ich es, dass Delphi diesen Codeabschnitt kompiliert? Ich stehe vor einem Rätsel und kann es mir nicht erklären.
type TSicherung = class(TObject)
public procedure kontrolle; end; type TsicherungCad = class(TSicherung) public procedure kontrolle; end; .... procedure TSicherungCad.kontrolle; begin exit; end; procedure TSicherung.kontrolle; begin exit; end; Beste Grüße und danke im voraus für Eure Hilfe Ulrich |
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
Eventuell solltest du mal Code reinschreiben, der auch was macht. :roll:
|
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
Hallo,
es steht schon Code drin. Ich habe nur exit; reingeschrieben, damit es nicht zu unübersichtlich wird. Im Original sieht es so aus:
Delphi-Quellcode:
Beste Grüße
procedure TsicherungCad.kontrolle;
begin if FindWindow(nil, 'CAD-Hauptprogramm') = 0 then begin Sicherung.haupt_aktiv(false); Sicherung.sichern(sPfadLokal); if boNetz then Sicherung.sichern(sPfadNetz); end //Ansonsten warten, bis Cadkontrolle geschlossen ist else begin Sicherung.haupt_aktiv(true); TWarten.enabled:=true; SendStringTohandle(FindWindow(nil, 'CAD-Hauptprogramm'), 'Schließen'); end; end; Ulrich |
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
Wird der Code auch aufgerufen im Programm?
|
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
Interessant wird, wenn wir die Stelle zu sehen bekommen, wo TSicherungCad.Controlle aufgerufen wird. Du deklarierst 2 Klassen mit ein und derselben Procedure ohne zu zu überschreiben etc.
Wo ist da der Sinn ? Code der nicht aufgerufen wird, ignoriert der Linker. Dann funktioniert auch kein Breakpoint. grez msch |
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
Du leitest TSicherungCad von TSicherung ab, welches schon eine Methode Kontrolle hat, und deklarierst in TSicherungCad dann nochmal diese Methode Kontrolle.
Fehlt Dir da nicht ein inherited oder reintroduce oder irgendsowas (aus dem Kopf) ??!? Roderich |
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
Außerdem: Da nur ein Exit in der Prozedur drinne steht, könnte ich mir vorstelllen, dass die Codeoptimierung von Delphi dies entfernt, da es ja unnötig ist.
|
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
@Chewie: Schon mal etwas weiter, als bis zum ersten Posting gelesen? :roll:
|
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
Ja, hab ich, aber ich hab es so verstanden, dass er auch beim Testen nur Exit drinnehatte und das Exit nicht nur fürs Forum geschrieben hat.
|
Re: Warum kompiliert Delphi diesen Codeabschnitt nicht???
Hallo,
vielleicht noch mal ein paar Sätze: Ich habe eine Klasse TSicherung mit verschiedenen Eigenschaften und Methoden (Bsp.: construktor, destruktor). Habe ich aber der Einfachheit hier nicht angegeben. Von dieser Klasse erzeuge ich weitere. TsicherungCad und TSicherungPHP sind weitere Klassen, die von TSicherung alle Methoden und Eigenaschften erben. Nun will ich bei den klassen TSicherungphp und TSicherungCad unterschiedlichen Code in der Prozedur kontrolle schreiben. Das will ich errreichen, in dem ich einfach die Prozedur bei den verschiedenen Klasen überschreibe. Ich habe in der Schule das auch mal so gemacht und da hat es funktioniert. Beste Grüße und schönen Dank für die bisherige rege Beteiliung Ulrich PS: So sieht die Deklaration aus(diesmal nicht zensiert):
Delphi-Quellcode:
type TSicherung = class(TObject)
private LManuellDatum, LAutoDatumLetzte, LAutoDatumNaechste : TLabel; TAuto, TWarten : TTimer; App : TApplication; Sicherung : TKopieren; iInterval, iBereinigenInterval : integer; boNetz, boBereinigen : boolean; sPfadLokal, SPfadNetz, sTypart : string; procedure TAutoOnTimer(Sender : TObject); procedure SendStringToHandle(Wnd: Hwnd; const AText: string); procedure TWartenOnTimer (Sender : TObject); public constructor create (GStatus : TGauge; LDatei, LAutoLetzteDatum, LAutoNaechDatum, LManDatum : TLabel; Applicat : TApplication; Formular : TForm; Data : TDatabase; Query : TQuery; sTyp : string); destructor destroy; procedure kontrolle; procedure sichern; procedure einstellungen_aktualisieren; end; type TsicherungCad = class(TSicherung) public procedure kontrolle; end; type TsicherungPHP = class(TSicherung) public procedure kontrolle; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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