Hi @ all,
bin neu hier deswegen erstmal ein herzliches hallo Smile
Ich habe ein Problem beim erstellen einer eigenen
Unit (Delphi 10 bzw. 2006)
Da es viele proceduren und funktion gibt die ich häufig benötige, habe ich mir gedacht ich bastle mir meine eigene
Unit.
Diese kann ich dann einfach in meine zukünftigen Projekte einbinden etc...
Dazu habe ich folgende Ordnerstruktur:
C:\eklassen\delphi\units
C:\eklassen\delphi\VerwaltungsProjekt
Unter "Verwaltungsprojekt" habe ich eine VLC-Anwendung erstellt unter der ich meine selbst erstellen Units verwalten/testen möchte.
in c:\eklassen\delphi\units erstell ich mit diesem Projekt die Units.
Den Ordner Units habe ich auch unter Optionen zum Suchpfad für Units eingetragen.
Nun habe ich mal eine
Unit erstellt, deren
pas Datei liegt im Ordner "units":
Delphi-Quellcode:
unit akcode;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry;
type
TAkCode =
class
function ReadRegStr(Rootkey:Cardinal; Subkey:
String; Entry:
String):
String;
function ReadRegInt(Rootkey:Cardinal; Subkey:
String; Entry:
String):Integer;
function WriteRegValue(Rootkey:Cardinal; Subkey:
String; Entry:
String; What:
String):boolean;
overload;
function WriteRegValue(Rootkey:Cardinal; Subkey:
String; Entry:
String; What:Integer):boolean;
overload;
function GetUVersion:
String;
private
public
end;
type
TAkTaskMgr=class
function LockTaskMgr:boolean;
function UnlockTaskMgr:boolean;
function IsLocked:boolean;
private
public
end;
var
pAkCode:TAkCode;
pAkTaskMgr:TAkTaskMgr;
implementation
function TAKCode.GetUVersion;
begin
Result :='
1.1';
end;
function TAkCode.ReadRegStr(Rootkey: Cardinal; Subkey:
string; Entry:
string):
String;
var
Reg:TRegistry;
begin
Result:='
';
Reg:=nil;
try
Reg:=TRegistry.Create;
Reg.RootKey:=Rootkey;
if Reg.OpenKey(Subkey,true)
then
Result:=Reg.ReadString(Entry)
else
Result:='
ERROR';
finally
Reg.Free;
end;
end;
function TAkCode.ReadRegInt(Rootkey: Cardinal; Subkey:
string; Entry:
string):Integer;
var
Reg:TRegistry;
begin
Result:=-1;
Reg:=nil;
try
Reg:=TRegistry.Create;
Reg.RootKey:=Rootkey;
if Reg.OpenKey(Subkey,true)
then
Result:=Reg.ReadInteger(Entry)
else
Result:=-1;
finally
Reg.Free;
end;
end;
function TAkCode.WriteRegValue(Rootkey: Cardinal; Subkey:
string; Entry:
string; What:
string):boolean;
var
Reg:TRegistry;
begin
Result:=false;
Reg:=nil;
try
Reg:=TRegistry.Create;
Reg.RootKey:=Rootkey;
if Reg.OpenKey(SubKey,true)
then
begin
Reg.WriteString(Entry,What);
Result:=true
end;
finally
Reg.Free;
end;
end;
function TAkCode.WriteRegValue(Rootkey: Cardinal; Subkey:
string; Entry:
string; What: Integer):boolean;
var
Reg:TRegistry;
begin
Result:=false;
Reg:=nil;
try
Reg:=TRegistry.Create;
Reg.RootKey:=Rootkey;
if Reg.OpenKey(SubKey,true)
then
begin
Reg.WriteInteger(Entry,What);
Result:=true
end;
finally
Reg.Free;
end;
end;
function TAkTaskMgr.LockTaskMgr;
begin
Result := pAKCode.WriteRegValue(HKEY_CURRENT_USER,'
Software\Microsoft\Windows\CurrentVersion\Policies\System','
DisableTaskMgr',1);
end;
function TAkTaskMgr.UnlockTaskMgr;
begin
Result := pAKCode.WriteRegValue(HKEY_CURRENT_USER,'
Software\Microsoft\Windows\CurrentVersion\Policies\System','
DisableTaskMgr',0);
end;
function TAkTaskMgr.IsLocked;
var
x:Integer;
begin
x:= pAkCode.ReadRegInt(HKEY_CURRENT_USER,'
Software\Microsoft\Windows\CurrentVersion\Policies\System','
DisableTaskMgr');
if x=1
then
Result:=true
else
Result:=false;
end;
end.
Diese
Unit bzw. das Projekt "Verwaltungsprojekt" habe ich compiliert und alles läuft.
Nun erstelle ich ein neues Projekt und binde die
Unit AkCode ein.
Dies funktioniert auch, d.h. er findet die
pas datei.
Wenn ich nun aber hergehe und in meinem neuen Projekt z.B. folgenden Aufruf mache:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
if pAkTaskMgr.IsLocked then
pAkTaskMgr.UnLockTaskMgr
else
pAkTaskMgr.LockTaskMgr;
end;
Dann kann ich das Projekt zwar compilieren und es läuft auch alles wie es soll, er zeigt mir aber dennoch im Struktur Bildschirm unter Fehler an, dass sowohl die Variablen pAkTaskMgr etc. als auch die FUnktionen Nicht deklarierte Bezeichner seien und unterstreicht auch alles rot.
Blickt er nicht dass die Sachen in der
Unit sind?
Wie kann ich ihm das weis machen?
Bitte helft mir Undecided
Es läuft zwar alles ist aber trozdem nervig wenn alles rot ist und anscheinend voller Fehler.
Danke mal im Vorab
bigmama