![]() |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hallo,
eine interessante Konstruktion, die Du da hast; interessant auch, dass das überhaupt funktioniert. Scheinbar betrachtet der Compiler Deine TText-Methoden als klassenstatische Methoden, so dass Du sie auch aufrufen kannst. Dies funktioniert aber nur solange Du die Variable TextClass in Deinem Project-Main deklarierst. Wenn ich die Deklaration in die Unit verschiebe, dann kracht es bei mir mächtig. Mal ein paar Dinge, die Dir bei der Delphi-Programmierung weiterhelfen werden:
Delphi-Quellcode:
Die procedure TText ist eine ganz normale Prozedur, kein Konstruktor!
type
TText = class private iStdTextColor: Integer; public procedure printf(sText: String; TextColor: Integer=0); // formatierte Ausgabe procedure ClrScr; // Konsole leeren function Ansi2OEM(AnsiString: string): string; // ANSI-String zu OEM-String procedure TText; // Konstruktor end; Was in C++ TText::TText ist in Delphi mit dem Zauberwort constructor zu bauen. Was in C++ TText::~TText ist in Delphi mit dem Zauberwort destructor zu bauen.
Delphi-Quellcode:
Hoffe es hilft Dir weiter.
type
TText = class private public constructor Create; // jetzt ist es ein Konstruktor destructor Destroy; override; end; implementation constructor TText.Create; begin inherited Create; // Deine Initialisierung end; destructor TText.Destroy; begin // Alles was noch aufgeräumt werden muss inherited Destroy end; Gruß |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Und in deiner Main dann z.B. so:
Delphi-Quellcode:
var
TextClass: TText; I: integer; begin TextClass := TText.Create; try TextClass.ClrScr; try for I := 0 to 15 do TextClass.printf('Hallo Welt!', I); Readln; except on E: Exception do Writeln(E.Classname, ': ', E.Message); end; finally TextClass.Free; end; end. |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Na ja, ginge auch mit Klassenmethoden.
|
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Danke an Bjoerk & Volker!
Wie gesagt, für mich als C++Programmierer ist das hier Neuland, aber jetzt klappt das auch! Vielen Dank für die schnelle Hilfe hier! Gruß Christoph |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Jetzt kommt ein anderer Fehler! Wiedermal funktioniert es, wenn ich Readln ausklammere
"Programm xx/xx/advText.exe kann nicht gefunden werden!" Ist mir echt ein Rätsel, da der Compiler ja die .exe erstellen soll und sie nicht suchen(dh er sucht sie und wenn er Sie nicht findet, DANN erzeugt er Sie)....
Delphi-Quellcode:
In der ceText.pas hat sich nichts geändert, nur der Konstruktor/Destruktor sind diesmal richtig ;) In Konstruktor wird iStdTextColor:=7(Weiß) gesetzt. Der Destruktor tut gar nix.
program advText;
{$APPTYPE CONSOLE} uses SysUtils, ceText in '..\ChrisEngine\ceText.pas'; var TextClass : TText; begin // Inititialisierung TextClass := TText.Create; TextClass.printf('Hallo Welt!'); TextClass.ClrScr; Readln; // Freigeben der Klassen TextClass.Destroy; end. Grüße Christoph |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
.. auch wenn es den Fehler nicht behebt..
Delphi-Quellcode:
und vielleicht noch alles in Resource-Schutzblöcken einpacken.
program advText;
{$APPTYPE CONSOLE} uses SysUtils, ceText in '..\ChrisEngine\ceText.pas'; var TextClass : TText; begin // Inititialisierung TextClass := TText.Create; TextClass.printf('Hallo Welt!'); TextClass.ClrScr; Readln; // Freigeben der Klassen TextClass.Free; // <-------- end. Grüße Klaus |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Keine Ahnung, eventuell das Project mal erzeugen (statt compilieren). Und such mal mit dem Explorer nach deinen *.pas und *.dcu ob welche doppelt sind.
|
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
So, nachdem Ich alles erzeugt hatte, kommt der Ursprungsfehler wieder: "Der Vorgang kann nicht erzeugt werden!" :(
Gruß Christoph |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 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