![]() |
Delphi-Version: 7
'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hey Leute,
Ich bin neu hier im Forum, und Delphi ist auch recht neu für mich, habt bitte deshalb etwas Nachsicht :wink: Ich habe neuerdings das Problem, das beim Kompilieren meines Projekts(Konsolenanwendung), der Compiler mich mit folgender Fehlermeldung(Vorher reagiert der Compiler sogar kurze Zeit nicht) bewirft: "Der Vorgang kann nicht erzeugt werden, das System kann die angegebene Datei nicht finden." Nach dem Ich meinen Quellcode zerstückelt habe(bin da schon ganz gut drin, bin nämlich C++-Programmierer), habe Ich herausgefunden, das der Fehler nur auftritt, wenn Ich die Funktion 'Readln;' verwende. Wenn Ich sie ausklammere oder lösche, verschwindet der Fehler :shock: Jetzt frag Ich mich nur: Warum und vor allem welche Datei ist nicht vorhanden?? Ich hoffe, Ihr kennt das Problem, oder habt zumindest Lösungsvorschläge, denn Ich weiß echt nicht weiter, bin schon kurz vor'm durchdreh'n ^^ Christoph PS: Die Unit SysUtils ist eingebunden und der Compiler meldet auch keine Fehler im Quellcode! |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hallo,
die Verwendung von readln ohne Angabe einer Datei, aus der gelesen werden soll, ist nur für Konsolenprogramme möglich, d.h. in der dpr muss als 1.Zeile {$APPTYPE console} stehen. Beste Grüße Mathematiker |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hallo!
Wie ich schon geschrieben habe, ist das Programm eine Konsolenanwendung:
Code:
Also das {$APPTYPE console} ist vorhanden, Ich habe es auchmal in die erste Zeile geschoben(mit program advText vertauscht), das hat aber auch keine Besserung gebracht :(
program advText;
{$APPTYPE CONSOLE} uses SysUtils, ceText in '..\ChrisEngine\ceText.pas', // <- dämlicher Name, Ich weiß :-D ceMath in '..\ChrisEngine\ceMath.pas'; // <- dämlicher Name, Ich weiß :-D var TextClass : TText; MathClass : TMath; begin TextClass.printf('Hallo Welt!'); TextClass.printf('Hallo Welt in blau!, 1); Readln; end. Grüße Christoph |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hallo,
Zitat:
Ich denke, Du wirst wohl die ceText.pas zeigen müssen, damit jemand eine Idee für den Fehler hat, denn
Code:
läuft einwandfrei, d.h. das readln "verträgt" sich mit dem printf wohl nicht. Ohne mehr Informationen kann man da wohl schwer etwas sagen.
program advText;
{$APPTYPE CONSOLE} uses SysUtils; begin Readln; end. Beste Grüße Mathematiker |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hallo!
Ok, hier ist die ceText.pas:
Delphi-Quellcode:
Ich weiß echt nicht, was daran falsch sein soll, vor allem weil die Funktionen ja auch ohne das Readln funktionieren, der Compiler sagt ja auch nix...
// -----------------------------------------------------------------------------
// Datei: ceText.pas ---------------------------------------------------------- // Datum: 19.03.2013 ---------------------------------------------------------- // ----------------------------------------------------------------------------- // Textklasse der ChrisEngine. Stellt Funktionen zum Umgang mit Text in -------- // Konsolenanwendungen bereit. -------- // ----------------------------------------------------------------------------- unit ceText; interface // I N C L U D E S ------------------------------------------------------------- uses SysUtils, Windows; // C E T E X T - K L A S S E ---------------------------------------------- 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; implementation procedure TText.TText; begin iStdTextColor := 6; end; procedure TText.printf(sText: String; TextColor: Integer=0); begin // Ungültige Textfarbe? if textColor > 14 then MessageBox(0, 'Ungültiger Farbwert für Text in TText.pas!', 'Warnung!', MB_OK); if textColor = 0 then TextColor := iStdTextColor; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), TextColor); Writeln(Ansi2OEM(sText)); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), iStdTextColor); end; procedure TText.ClrScr; var tc :tcoord; nw : DWORD; cbi : TConsoleScreenBufferInfo; HConsoleOutput:thandle; TextAttr : Word; begin TextAttr := cbi.wAttributes; HConsoleOutput := GetStdHandle(STD_OUTPUT_HANDLE); getConsoleScreenBufferInfo(HConsoleOutput,cbi); tc.x := 0; tc.y := 0; FillConsoleOutputAttribute(HConsoleOutput,textattr,cbi.dwsize.x*cbi.dwsize.y,tc,nw); FillConsoleOutputCharacter(HConsoleOutput,#32,cbi.dwsize.x*cbi.dwsize.y,tc,nw); setConsoleCursorPosition(hconsoleoutput,tc); end; function TText.Ansi2OEM(AnsiString: string): string; begin ANSIString := ANSIString + #0; CharToOEM(PChar(ANSIString), @ANSIString[1]); Delete(ANSIString, Length(ANSIString), 1); Result := ANSIString; end; end. Gruß Chris |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hallo,
dein Textstring
Code:
ist nicht abgeschlossen. Mit
TextClass.printf('Hallo Welt in blau!, 1);
Code:
funktioniert alles tadellos, natürlich ohne die andere Unit, die Du ja eigentlich gar nicht aufrufst.
TextClass.printf('Hallo Welt in blau!', 1);
Beste Grüße Mathematiker |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hallo,
das mit dem Textstring ist mir wohl hier beim posten passiert :/ Ich habe jetzt in der zweiten Bibliothek, ceMath, während Ich auf mögliche Antworten gewartet habe, eine neue Funktion hinzugefügt, wirklich nur eine neue Funktion=Funktionsprototyp in der Klasse und eben die Funktion im 'implementation'-Teil reinschrieben. Nur danach funktioniert es!? Dabei hatte Ich doch die ceMath-Unit nicht einmal benutzt? Hat jemand eine Idee, woran das liegen könnte? Ich glaub langsam einfach nur noch, das Delphi mich troll'n will ^^ Gruß Christoph |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Tut mir leid, ich habe keine Idee mehr. :gruebel:
Da müssen wohl die Profis 'ran. Beste Grüße Mathematiker |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Hallo
Schade, naja Ich glaub bei dem Fehler muss man dann einfach weiter programmieren, Ich hatte schon bei vorherigen Programmen(ohne eigene Units, nur mit Standardtfunktionen) das Problem, das mir der Compiler diesen Fehler an den Kopf geworfen hat, da habe Ich es aber einfach ignoriert und weiter gemacht, als das Programm dann fertig war, war der Fehler damals auch weg. Hier war aber der Fehler trotz fertig gestellter Funktionen IMMER noch da, daher hab Ich mich gemeldet...Echt komisch! Falls noch ein anderer eine Erklärung für dieses 'Phänomen' hat, kann er Sie ja bitte posten! :) Gruß Christoph |
AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
Ist TextClass erzeugt? Mit "procedure TText" kann man jedenfalls (wenn ich mich nicht irre) keine Klasse erzeugen?
|
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 15:14 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