Einzelnen Beitrag anzeigen

bigmama2k

Registriert seit: 5. Mär 2007
5 Beiträge
 
#1

Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:01
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
  Mit Zitat antworten Zitat