AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei Erstellung eigener Unit

Ein Thema von bigmama2k · begonnen am 8. Mär 2007 · letzter Beitrag vom 10. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
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
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:04
-das war Quatsch - hab' es gelöscht.

Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:06
Zitat von Klaus01:
-das war Quatsch - hab' es gelöscht.

Klaus
Er arbeitet doch mit Klassen...

Bye Christian

Edit: Verdammt, er hats gemerkt bevor ich gepostet hab...
Christian
  Mit Zitat antworten Zitat
bigmama2k

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

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:09
Eben wollte ich auch gerade schreiben -zwecks klassen-

ich blick nicht was das Problem sein soll, weil aufrufen kann ich ja alles, Funktionieren tut es auch
aber unterstreichen und meckern tut er trotzdem
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:15
Also für mich sieht das auch alles korrekt aus, soll ja auch funktionieren...
Aber da ich mich nicht mit Delphi 2006 auskenne, kann ich dazu nichts sagen...

Bin noch nicht höher als Delphi 7 gekommen


Bye Christian
Christian
  Mit Zitat antworten Zitat
bigmama2k

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

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:19
ja ich sag ja das ist etwas Krotesk
Es scheint irgendwie als würde sich delphi nur direkt beim Ausführen des Programmes
die aktuelle Unit "saugen" und während dem arbeiten irgend eine alte Dateiversion
die im Speicher liegt oder so.

Wenn ich mein Projekt compiliere/erstelle/debugge arbeitet er mit der aktuellsten Version
zurück im Entwicklungsmodus tut er wieder so als würde er die Funktionen nicht kennen.


HILFE
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:20
Stört es dich wirklich so sehr?
Auch bei mir löst er es manchmal nicht richtig auf, aber er kompiliert ja trotzdem.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
bigmama2k

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

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:23
ja weil er löst nicht manchmal korrekt auf...

er macht es mit der ganzen Unit von mir bzw. allen anderen Units wo ich erstelle und wenn
mal der ganze Source rot unterstrichen ist, dann ist das wirklich extrem störend.
  Mit Zitat antworten Zitat
mr2

Registriert seit: 3. Mai 2003
140 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:29
nimm' doch mal die Unit direkt in das Projekt auf (per Datei hinzufügen oder "drag and drop")

übrigens sind globale Variablen kein guter Programmierstil

das was Du gepostet hast, könntest Du alles mit class procedures / functions lösen, dann benötigst Du keine Instanzen

mr2
"... we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we don't know. But there are also unknown unknowns - the ones we don't know we don't know."
  Mit Zitat antworten Zitat
bigmama2k

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

Re: Problem bei Erstellung eigener Unit

  Alt 8. Mär 2007, 21:36
sorry ich fürchte ich kann dir gerade nicht ganz folgen

was meist du mit class procedure/functions?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz