![]() |
Komponente geht nicht
Hallo, das ist meine erste Komponente, eine shutdown Komponente bloss lässt sie sich nicht Compilieren.
Wenn ihr mal den Quelltext durchlesen und mir sagen könnten was ich falsch gemacht habe wäre das hilfreich.
Delphi-Quellcode:
unit shutdown;
interface uses SysUtils, Classes; type Tshutdown = class(TComponent) private { Private-Deklarationen } out: Boolean; down: Boolean; re: Boolean; remote: Boolean; kill: Boolean; ip: Integer; protected { Protected-Deklarationen } public { Public-Deklarationen } function shutdown: Boolean; function logout: Boolean; function restart: Boolean; function remote_shutdown: Boolean; function killtask : Boolean; published { Published-Deklarationen } property shutdown_ : Boolean Read down write down; property restart_ : Boolean Read re write re; property logout_ : Boolean Read out write out; property remote_shutdown_ : Boolean Read remote write remote; property remote_shutdown_ip : Integer Read IP write IP; property killtask_ : Boolean Read kill write kill; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [Tshutdown]); end; function Tshutdown.shutdown:Boolean; begin if shutdown_= true then begin ('cmd "shutdown -s -t 00"'); end else shutdown_ := false; end; function Tshutdown.logout:Boolean; begin if logout_= true then begin ('cmd "shutdown -l"'); end else logout_ := false; end; function Tshutdown.restart:Boolean; begin if restart_= true then begin ('cmd "shutdown -r"'); end else restart_ := false; end; function Tshutdown.remote_shutdown:Boolean; begin if remote_shutdown_= true then begin ('cmd "shutdown -m \\(+remote_shutdown_ip) -s"'); end else remote_shutdown_ := false; end; function Tshutdown.killtask:Boolean; begin if killtask_= true then begin ('cmd "shutdown -f"'); end else killtask_ := false; end; end. |
Re: Komponente geht nicht
Delphi-Quellcode:
Mal ne dumme Frage: Was soll das werden wenns fertig ist? :shock:
('cmd "shutdown -f"');
EDIT: Würde mir mal Shellexecute (Uses: shellapi) anschauen... |
Re: Komponente geht nicht
Ja, ich habe schonmal davon gehört von dem shellexecute teil, aber ich hab des net geblickt.
Des shutdown -f bricht alle Anwendungen ohne Warnung ab. |
Re: Komponente geht nicht
Zitat:
|
Re: Komponente geht nicht
Ja, das lässt sich ja noch ändern meine Frage war eigentlich warum die Komponente nicht funktioniert.
|
Re: Komponente geht nicht
Ich nehme mal an, daß sie sich so nicht kompilieren läßt.
|
Re: Komponente geht nicht
Genau !!!
Zitat:
Ne jetzt mal im ernst warum nicht ?? :gruebel: Ich bin da voller Anfänger, wie gesagt meine erste Komponente und Delphi Anfänger bin ich auch noch. |
Re: Komponente geht nicht
Zitat:
Zitat:
|
Re: Komponente geht nicht
Wurde doch schon gesagt:
Zitat:
|
Re: Komponente geht nicht
1.
Kann mal eine ein Beispiel machen ? nur von z.B.
Delphi-Quellcode:
2.
('cmd "shutdown -f"');
Sonst würde alles gehen ??? |
Re: Komponente geht nicht
Fast.Wenn du mir noch sagst was hierbei rauskommen soll
Delphi-Quellcode:
('cmd "shutdown -m \\(+remote_shutdown_ip) -s"');
|
Re: Komponente geht nicht
Z.B.
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', 'cmd', 'shutdown -f', nil, SW_SHOWNORMAL);
|
Re: Komponente geht nicht
Danke für das Beispiel aber was bedeutet
Delphi-Quellcode:
und wozu das SW_SHOWNORMAL. (Der andere Code heisst ja das es cmd öffnen soll und den Befehl xxxx ausführen soll oder ?)
nil
@inherited: Also das wiess ich nicht so genau, ich dachte helt mal das man die IP adresse in die Variable remote_shutdown_ip eingibt und dann den Rechner mit der IP die Eingegeben wurde herunterfährt. |
Re: Komponente geht nicht
Die Parameterund ihre Bedeutung werden in der OH beschrieben
|
Re: Komponente geht nicht
Was ist die OH, oder wie kommt man da hin ???
Das Application.Handle und das SW_Shownormal geht nicht, beides rot Unterstrichen. |
Re: Komponente geht nicht
Application ist in Forms deklariert, also die mal einbinden in der Uses Liste.
SW_SHOWNORMAL sollte in der Windows deklariert sein, also auch diese mal einbinden... /EDIT: Beides würdest du über die Hilfe herausfinden! |
Re: Komponente geht nicht
Ja, aber wie kommt man zur Hilfe ??
|
Re: Komponente geht nicht
Wie in den meißten Windows-Programmen:
Markiere die Funktion (ShellExecute) und drücke F1! |
Re: Komponente geht nicht
Ok Dank dir :hi:
|
Re: Komponente geht nicht
Ja, also meine Komponente hab ich jetzt installiert, den Bibliothekspfad auch Hinzugefügt und die Komponente auf meiner Form, jetzt kann ich die Eigenschaften aber nicht ändern, am Anfang habe ich shutdown und so auf false, jetzt will ich die eigenschaft auf true setzen, aber es geht nicht.
Ich mach das so:
Delphi-Quellcode:
Aber ohne erfolg, das zweite shutdown ist rot Unterstrichen. :gruebel:
Nach eine Mausklick auf ein Button;
begin shutdown1.shutdown := true; end; |
Re: Komponente geht nicht
Die Property heißt auch shutdown_
|
Re: Komponente geht nicht
Sie ist aber trotzdem unterstrichen.
\\Edit
Delphi-Quellcode:
[edit=MrSpock]Delphi-Code tags eingefügt. Mfg, MrSpock[/edit]
unit shutdown;
interface uses SysUtils, Classes, shellapi, Forms, Windows; type Tshutdown = class(TComponent) private { Private-Deklarationen } out: Boolean; down: Boolean; re: Boolean; kill: Boolean; protected { Protected-Deklarationen } public { Public-Deklarationen } function shutdown: Boolean; function logout: Boolean; function restart: Boolean; function killtask : Boolean; published { Published-Deklarationen } property shutdown_ : Boolean Read down write down; property restart_ : Boolean Read re write re; property logout_ : Boolean Read out write out; property killtask_ : Boolean Read kill write kill; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [Tshutdown]); end; function Tshutdown.shutdown:Boolean; begin if shutdown_= true then begin ShellExecute(Application.Handle, 'open', 'cmd', 'shutdown -s', nil, SW_Shownormal); end else shutdown_ := false; end; function Tshutdown.logout:Boolean; begin if logout_= true then begin ShellExecute(Application.Handle, 'open', 'cmd', 'shutdown -l', nil, SW_Shownormal); end else logout_ := false; end; function Tshutdown.restart:Boolean; begin if restart_= true then begin ShellExecute(Application.Handle, 'open', 'cmd', 'shutdown -r', nil, SW_Shownormal); end else restart_ := false; end; function Tshutdown.killtask:Boolean; begin if killtask_= true then begin ShellExecute(Application.Handle, 'open', 'cmd', 'shutdown -f', nil, SW_Shownormal); end else killtask_ := false; end; end. |
Re: Komponente geht nicht
Zeig mal den Code der Unit, bzw hänge diese an deinen Beitrag
|
Re: Komponente geht nicht
Shutdown is auch ne Funktion... dh du rufst einfach nur
Delphi-Quellcode:
auf und dann wird das ausgeführt.. du kannst funktionen nix zuweisen ;)
DeineKlasse.Shutdown_;
Gruß Neutral General |
Re: Komponente geht nicht
OH = Online Hilfe
F1 Heiko |
Re: Komponente geht nicht
Ich will aber haben das ich dem Befehl z.B. "shutdown" den Wert true oder false zuweisen kann.
|
Re: Komponente geht nicht
Hallo #,
du kannst nur properties Werte zuweisen. ausserdem solltest du dich an die Delphi-Konventionen halten.
Delphi-Quellcode:
Heiko
procedure SetShutDown(theValue: Boolean);
begin if theValue then begin DoInternalShutDown; // DoInternalShutDown enthält den shutdown code end; end; property ShutDown: Boolean write SetShutDown; // read ist sinnlos |
Re: Komponente geht nicht
Danke dir Vielmals
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 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