Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   'Der Vorgang kann nicht erzeugt werden', Delphi 7 (https://www.delphipraxis.net/173832-der-vorgang-kann-nicht-erzeugt-werden-delphi-7-a.html)

Volker Z. 19. Mär 2013 21:58

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:
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;
Die procedure TText ist eine ganz normale Prozedur, kein Konstruktor!

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:
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;
Hoffe es hilft Dir weiter.

Gruß

Bjoerk 19. Mär 2013 22:30

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.

Furtbichler 20. Mär 2013 07:38

AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
 
Na ja, ginge auch mit Klassenmethoden.

Chris603 20. Mär 2013 15:24

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

Chris603 20. Mär 2013 15:44

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:
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.
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.

Grüße
Christoph

Klaus01 20. Mär 2013 15:52

AW: 'Der Vorgang kann nicht erzeugt werden', Delphi 7
 
.. auch wenn es den Fehler nicht behebt..

Delphi-Quellcode:
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.
und vielleicht noch alles in Resource-Schutzblöcken einpacken.

Grüße
Klaus

Bjoerk 20. Mär 2013 16:17

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.

Chris603 20. Mär 2013 16:48

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.
Seite 2 von 2     12   

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