AGB  ·  Datenschutz  ·  Impressum  







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

Funktion aus Unit1 in Unit3 benutzen

Ein Thema von Pseudemys Nelsoni · begonnen am 2. Dez 2003 · letzter Beitrag vom 2. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:19
Moin,

ich habe die unit1 in der die funktion ist in meiner unit3 eingebunden, wenn ich die funktion in der unit 3 verwenden möchte bekomme ich aber trotzdem

Zitat:
[Fehler] Unit3.pas(97): Undefinierter Bezeichner: 'GetLevel'
[Fataler Fehler] Unit1.pas(74): Verwendete Unit 'Unit3.pas' kann nicht compiliert werden
weiss jemond warum?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:22
in die unit3 schreiben:

Delphi-Quellcode:
uses
  { ... }, Unit1;
voila, fertig

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:25
unit1 ist in unit3 und unit3 in unit1, deswegen weiss ich nicht wieso das nicht geht :\

unit1 sieht so aus:

uses Unit3, Unit2;


unit3 sieht so aus:

uses Unit1;
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:27
Steht die Funktionsdeklaration von GetLevel im Interface-Teil der Unit1?
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:35
jo, bei den ganzen anderen proceduren die automatisch hinzugefügt werden...also ganz oben unter "type"

ist das falsch?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
andianon

Registriert seit: 2. Dez 2003
Ort: Wechselnd
28 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:39
Stehen die "uses unit1" bzw. "uses unit3" jeweils im interface-Teil? Kreuzreferenz?
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#7

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:40
Die automatisch erzeugten Prozeduren dürfen nicht in Private stehen. Wenn dem so ist, verschiebe sie nach public.
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#8

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:42
ich weiss nicht ganz wie das gemeint ist, aber ich habe 2 uses (wie immer) in meinen units, und die units die ich eingebunden habe sind beim 2ten "uses"(warum gibts den teil überhaupt 2mal?)
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
andianon

Registriert seit: 2. Dez 2003
Ort: Wechselnd
28 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:45
Warum zweimal ist an anderer Stelle nachzulesen. Kannst du die beiden Units posten?
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#10

Re: Funktion aus Unit1 in Unit3 benutzen

  Alt 2. Dez 2003, 14:53
klar, wird zwar bisschen viel aber ....


also das ist unit1 derzeit:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ToolWin, ComCtrls, StdCtrls, XPMan, ImgList, IdBaseComponent,
  IdAntiFreezeBase, IdAntiFreeze, IdComponent, IdTCPConnection,
  IdTCPClient, IdIRC, ExtCtrls, Mask, Menus;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    XPManifest1: TXPManifest;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    GroupBox2: TGroupBox;
    ListView1: TListView;
    ToolButton6: TToolButton;
    ImageList1: TImageList;
    GroupBox3: TGroupBox;
    ListBox1: TListBox;
    GroupBox4: TGroupBox;
    ListView2: TListView;
    GroupBox5: TGroupBox;
    StatusBar1: TStatusBar;
    IdAntiFreeze1: TIdAntiFreeze;
    IdIRC1: TIdIRC;
    Memo1: TMemo;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    PopupMenu1: TPopupMenu;
    V1: TMenuItem;
    N1: TMenuItem;
    Quiz1: TMenuItem;
    Antwort1: TMenuItem;
    procedure ToolButton6Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure IdIRC1Notice(Sender: TObject; AUser: TIdIRCUser;
      AChannel: TIdIRCChannel; Content: String);
    procedure IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
      AContent: String; var Suppress: Boolean);
    procedure IdIRC1UserMode(Sender: TObject; AModes: String);
    procedure IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
      AChannel: TIdIRCChannel; Content: String);
    procedure IdIRC1Quit(Sender: TObject; AUser: TIdIRCUser);
    procedure IdIRC1Part(Sender: TObject; AUser: TIdIRCUser;
      AChannel: TIdIRCChannel);
    procedure IdIRC1Parted(Sender: TObject; AChannel: TIdIRCChannel);
    procedure IdIRC1Join(Sender: TObject; AUser: TIdIRCUser;
      AChannel: TIdIRCChannel);
    procedure ToolButton4Click(Sender: TObject);
    procedure IdIRC1Kick(Sender: TObject; AUser, AVictim: TIdIRCUser;
      AChannel: TIdIRCChannel);
    procedure IdIRC1Kicked(Sender: TObject; AUser: TIdIRCUser;
      AChannel: TIdIRCChannel);
    function GetLevel(nick: string): string;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  benutzer: TStringList;

implementation

uses Unit3, Unit2;

{$R *.dfm}

function GetLevel(nick: string): string;
var
  i: integer;
  match: boolean;
  nilist, lilist: string;
begin
  match := false;
  for i := 0 to Form3.Memo1.Lines.Count-1 do
  begin
    nilist := Copy(Form3.Memo1.Lines.Strings[i], 1, Pos(':', Form3.Memo1.Lines.Strings[i])-1);
    lilist := Copy(Form3.Memo1.Lines.Strings[i], Pos(':', Form3.Memo1.Lines.Strings[i])+1, length(Form3.Memo1.Lines.Strings[i]));
    if nick = nilist then
    begin
      Result := nick + #9 + '[' + lilist + ']';
      match := true;
      break;
    end;
  end;
  if match = false then
  begin
    Result := nick + #9 + '[0]';
  end;
end;




procedure TForm1.ToolButton6Click(Sender: TObject);
begin
  Form3.ShowModal;
end;

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
  if ToolButton1.Hint = 'Verbindenthen
  begin
    ToolButton1.Hint := 'Trennen';
    ToolButton1.ImageIndex := 2;
    idIRC1.Connect;
  end
  else
  begin
    ToolButton1.Hint := 'Verbinden';
    ToolButton1.ImageIndex := 0;
    idIRC1.Disconnect;
  end;
end;

procedure TForm1.IdIRC1Notice(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
  if auser.Nick = 'NickServthen
  begin
    if Content = 'If you do not change within one minute, I will change your nick.then
    begin
      idirc1.Say('NickServ', 'identify ...');
    end;
    if Content = 'NickServ Your nick isn''t registered.then
    begin
      idirc1.Say('NickServ', 'register ... ism' + IntToStr(Random(999999)));
      idirc1.Say('NickServ', 'link ism ...');
      idirc1.Join('#night');
    end;
    if Content = 'Password accepted - you are now recognized.then
    begin
      idirc1.Join('#night');
    end;
  end;
end;




procedure GetNicks(AUser: TIdIRCUser; ACommand, AContent: string);
begin
  Delete(AContent, 1, Pos(':', AContent));
  benutzer := TStringList.Create;
  while Pos(' ', AContent) > 0 do
  begin
    case AContent[1] of
      '*' : Delete(AContent, 1, 1);
      '!' : Delete(AContent, 1, 1);
      '@' : Delete(AContent, 1, 1);
      '%' : Delete(AContent, 1, 1);
      '+' : Delete(AContent, 1, 1);
    end;
    benutzer.Sorted := true;
    benutzer.Add(Copy(AContent, 1, Pos(' ', AContent)-1));
    Delete(AContent, 1, Pos(' ', AContent));
  end;
end;

procedure EndOfNicks(AUser: TIdIRCUser; ACommand, AContent: string);
var
  i: integer;
begin
  for i := 0 to benutzer.Count-1 do
  Form1.ListBox1.Items.Add(GetLevel(benutzer.Strings[i]));
  benutzer.free;
end;






procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
  AContent: String; var Suppress: Boolean);
begin
  if ACommand = '353then GetNicks(AUser, ACommand, AContent);
  if ACommand = '366then EndOfNicks(AUser, ACommand, AContent);
end;


procedure TForm1.IdIRC1UserMode(Sender: TObject; AModes: String);
begin
  idIRC1.Say('NickServ', 'identify ...');
end;

procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
  Memo1.Lines.Add('[' + DateToStr(Now) + '][' + TimeToStr(Now) + '] (' + auser.Nick + ') ' + Content);
end;

procedure TForm1.IdIRC1Quit(Sender: TObject; AUser: TIdIRCUser);
begin
  if auser.Nick <> idirc1.Nick then
  ListBox1.Items.Delete(ListBox1.Items.IndexOf(GetLevel(auser.Nick)))
  else ListBox1.Clear;
end;

procedure TForm1.IdIRC1Part(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
begin
  ListBox1.Items.Delete(ListBox1.Items.IndexOf(GetLevel(auser.Nick)));
end;

procedure TForm1.IdIRC1Parted(Sender: TObject; AChannel: TIdIRCChannel);
begin
  ListBox1.Clear;
  memo1.Clear;
end;

procedure TForm1.IdIRC1Join(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
begin
  ListBox1.Items.Add(GetLevel(auser.nick));
end;

procedure TForm1.ToolButton4Click(Sender: TObject);
begin
  Form2.ShowModal;
end;

procedure TForm1.IdIRC1Kick(Sender: TObject; AUser, AVictim: TIdIRCUser;
  AChannel: TIdIRCChannel);
begin
  ListBox1.Items.Delete(ListBox1.Items.IndexOf(GetLevel(auser.Nick)));
end;

procedure TForm1.IdIRC1Kicked(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
begin
  ListBox1.Clear;
  memo1.Clear;
end;

end.

das ist unit3:

Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, registry;

type
  TForm3 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

function CountTok(c: char; s: string): integer;
begin
  Result := 0;
  while Pos(c, s) > 0 do
  begin
    inc(Result);
    Delete(s, 1, Pos(c, s));
  end;
end;


procedure TForm3.Button1Click(Sender: TObject);
begin
 Close;
end;

procedure TForm3.Button2Click(Sender: TObject);
var
  reg: TRegistry;
  i, i2: integer;
  match: boolean;
  cnick, nilist: string;
begin
  reg := TRegistry.Create;
  with reg do
  begin
    RootKey := HKEY_CURRENT_USER;
    OpenKey('Software\GCC\ism v2.0', true);
    WriteString('userlist', '');
    for i := 0 to Memo1.Lines.Count-1 do
    begin
      WriteString('userlist', ReadString('userlist') + Memo1.Lines.Strings[i] + ';');
    end;
    CloseKey;
    Free;
  end;
  reg := TRegistry.Create;
  with reg do
  begin
    RootKey := HKEY_CURRENT_USER;
    OpenKey('Software\GCC\ism v2.0', true);
    WriteString('banlist', '');
    for i := 0 to Memo2.Lines.Count-1 do
    begin
      WriteString('banlist', ReadString('banlist') + Memo2.Lines.Strings[i] + ';');
    end;
    CloseKey;
    Free;
  end;
  for i := 0 to Form3.Memo1.Lines.Count-1 do
  begin
    match := false;
    for i2 := 0 to Form1.ListBox1.Items.Count-1 do
    begin
      nilist := Copy(Memo1.Lines.Strings[i], 1, Pos(':', Memo1.Lines.Strings[i])-1);
      cnick := Copy(Form1.ListBox1.Items.Strings[i2], 1, Pos(#9, Form1.ListBox1.Items.Strings[i2])-1);
      if cnick = nilist then
      begin
        Form1.ListBox1.Items.Delete(i2);
        Form1.ListBox1.Items.Add(GetLevel(cnick)); // <<< hier der fehler von wegen undefinierte bezeichner
        break;
      end;
    end;
  end;
  Close;
end;

procedure TForm3.FormCreate(Sender: TObject);
var
  reg: TRegistry;
  cKey: string;
begin
  reg := TRegistry.Create;
  with reg do
  begin
    RootKey := HKEY_CURRENT_USER;
    OpenKey('Software\GCC\ism v2.0', true);
    cKey := ReadString('userlist');
    while CountTok(';', cKey) > 1 do
    begin
      Memo1.Lines.Add(Copy(cKey, 1, Pos(';', cKey)-1));
      Delete(cKey, 1, Pos(';', cKey));
    end;
    if (Pos(';', cKey) > 0) AND (length(cKey) > 2) then
    Memo1.Lines.Add(Copy(cKey, 1, Pos(';', cKey)-1));
    CloseKey;
    Free;
  end;
  reg := TRegistry.Create;
  with reg do
  begin
    RootKey := HKEY_CURRENT_USER;
    OpenKey('Software\GCC\ism v2.0', true);
    cKey := ReadString('banlist');
    while CountTok(';', cKey) > 1 do
    begin
      Memo2.Lines.Add(Copy(cKey, 1, Pos(';', cKey)-1));
      Delete(cKey, 1, Pos(';', cKey));
    end;
    if (Pos(';', cKey) > 0) AND (length(cKey) > 2) then
    Memo2.Lines.Add(Copy(cKey, 1, Pos(';', cKey)-1));
    CloseKey;
    Free;
  end;
end;

end.
Mario
MSN: cyanide@ccode.de
  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 13:04 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