Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi Code Umbauen (https://www.delphipraxis.net/113161-delphi-code-umbauen.html)

msickel 3. Mai 2008 17:50


Delphi Code Umbauen
 
Hallo

Ich habe da mal ne Frage, im Moment habe ich folgenden Code..
Delphi-Quellcode:

  //--------------------------------------------------------------------------
  // User 1
  //--------------------------------------------------------------------------
  try
    JvMemo1.Lines.Add('Recording User Anmeldung läuft');
    JvMemo1.Refresh;

    Randomize;
    v7Session1.Logon(frmUser.Edit4.Text,frmUser.Edit1.Text,frmUser.Edit3.Text,StrToInt(frmUser.Edit2.Text),tvApplicationTypeClient,32100,tvServerConnectionLevelFull,FALSE,tvStationUsageOwner);
    oCallFolder1 := v7Session1.GetDefaultFolder(tvFolderCalls);
    oCallItems1 := oCallFolder1.Items;
    oSystemTargetFolder1 := v7Session1.GetDefaultFolder(tvFolderSystemTarget);
    oTarget1 := _SystemTarget(oSystemTargetFolder1.Items.Item(frmUser.Edit1.Text,tvSearchkey));

    V7Session1.OnCallStatusChange := V7Session1CallStatusChange;
    sOwnerName1 := oCallFolder1.Name;

    JvMemo1.Lines.Add('Recording User wurde angemeldet');
    JvMemo1.Refresh;

  except
    //bFehler := True;
    JvMemo1.Lines.Add('Fehler bei der Anmeldung von Recordinguser');
    forms.Application.Terminate;
    //frmSetup.ShowModal;
  end;
und folgenden Code auch noch

Delphi-Quellcode:

procedure TfrmMain.v7Session1CallStatusChange(ASender: TObject; const ID: WideString; Status, OldStatus: TOleEnum);
begin
  //--------------------------------------------------------------------------
  // ID des Calls zuweisen
  //--------------------------------------------------------------------------
  oCurrentCall1 := _Call(v7Session1.GetItem(ID,''));
  sHistoryCall1 := oCurrentCall1.CallHistoryID;
  sCallID1 := ID;
  //--------------------------------------------------------------------------
  // Satus des Anrufes auswerten und darauf reagieren
  //--------------------------------------------------------------------------
  case Status of
    tvPartyStatusUnknown:
        JvMemo1.Lines.Add('unknown ' + sUser1Name);
    tvPartyStatusNone:
        JvMemo1.Lines.Add('none ' + sUser1Name);
    tvPartyStatusActive:
        begin
            JvMemo1.Lines.Add('ringing ' + sUser1Name);
  // usw......
da ich das aber nun sehr oft brauche wollte ich das in Funktionen und Prozeduren umbauen und mit Arrays arbeiten (wenn das geht ?)
Dabei habe ich folgendes gemacht

Delphi-Quellcode:

function LogOn(const sServer: string;const sUser, sPass, sID: string;var iCount:integer): boolean;
var
  v7Session : Array[0..5] of Tv7Session;
begin
  v7Session[1] := Tv7Session.Create(Application);
  v7Session[1].Logon(sServer,sUser,sPass,StrToInt(sID),tvApplicationTypeClient,32100,tvServerConnectionLevelFull,FALSE,tvStationUsageOwner);
  oCallFolder[1] := v7Session[1].GetDefaultFolder(tvFolderCalls);
  oCallItems[1] := oCallFolder[1].Items;
  oSystemTargetFolder[1] := v7Session[1].GetDefaultFolder(tvFolderSystemTarget);
  oTarget[1] := _SystemTarget(oSystemTargetFolder[1].Items.Item(sUser,tvSearchkey));
 
   // diese zeile geht nicht warum bzw wie muss ich es machen ???

   V7Session[1].OnCallStatusChange := V7Session[1]CallStatusChange;


   sOwnerName[1] := oCallFolder[1].Name;

end;


procedure TfrmMain.v7Session[1]CallStatusChange(ASender: TObject; const ID: WideString; Status, OldStatus: TOleEnum);
begin

end;

[Fehler] Main.pas(110): ';' erwartet, aber '[' gefunden
[Fehler] Main.pas(110): '=' erwartet, aber ';' gefunden
[Fehler] Main.pas(127): Inkompatible Typen: 'Tv7Session[1]CallStatusChange' und 'Tv7Session'
usw...
Nun bekomme ich bei der markierten Zeile einen Fehler, wie muss ich es Umbauen das es geht?

Martin

mkinzler 3. Mai 2008 17:52

Re: Delphi Code Umbauen
 
Und der genaue Fehler ist wohl geheim :gruebel:

DeddyH 3. Mai 2008 17:56

Re: Delphi Code Umbauen
 
Delphi-Quellcode:
V7Session[1].OnCallStatusChange := V7Session1CallStatusChange;

msickel 3. Mai 2008 17:59

Re: Delphi Code Umbauen
 
Sorry war noch nicht ganz fertig :-)

tomsel 3. Mai 2008 18:45

Re: Delphi Code Umbauen
 
Zitat:

Delphi-Quellcode:
procedure TfrmMain.v7Session[1]CallStatusChange(ASender: TObject; const ID: WideString; Status, OldStatus: TOleEnum);
begin

end;

Das "[1]" im Funkionsbezeichner ist der Fehler. Ich ahne, was du damit bezweckst, aber du kannst dieselbe Funktion allen V7Sessions zuweisen und dann über den ASender ermitteln, welche Session CallStausChange aufruft.

Wa sich nicht raffe: In der Funktion LogOn hast du ein lokales Array, arbeitest aber nur mit dem index 1, solte der Index nicht als Parameter übergeben werden - oder ist das noch nicht ganz fertig?

msickel 3. Mai 2008 19:45

Re: Delphi Code Umbauen
 
Zitat:

Zitat von tomsel
Zitat:

Delphi-Quellcode:
procedure TfrmMain.v7Session[1]CallStatusChange(ASender: TObject; const ID: WideString; Status, OldStatus: TOleEnum);
begin

end;

Das "[1]" im Funkionsbezeichner ist der Fehler. Ich ahne, was du damit bezweckst, aber du kannst dieselbe Funktion allen V7Sessions zuweisen und dann über den ASender ermitteln, welche Session CallStausChange aufruft.

Wa sich nicht raffe: In der Funktion LogOn hast du ein lokales Array, arbeitest aber nur mit dem index 1, solte der Index nicht als Parameter übergeben werden - oder ist das noch nicht ganz fertig?

Jep das ist noch nicht ganz fertig, aber kannst Du mir kurz erklären wie das funktioniert mit dem Ermitteln über den ASender, und wie geht das dann mit der Zuweisung ?


Martin

mkinzler 3. Mai 2008 19:48

Re: Delphi Code Umbauen
 
Im Parameter Sender befindet sich eine Referenz des auslösenden Objekts

msickel 4. Mai 2008 07:39

Re: Delphi Code Umbauen
 
wäre es möglich das etwas mehr zu Umschreiben, vielleicht auch mit ein paar Codezeilen!

Wäre sehr nett.

Gruss Martin

toms 4. Mai 2008 08:53

Re: Delphi Code Umbauen
 
Anstatt
Delphi-Quellcode:
oCurrentCall1 := _Call(v7Session1.GetItem(ID,''));
schreibst du

Delphi-Quellcode:
if Sender is Tv7Session then // Überprügung, ob Sender vom Typ Tv7Session
  oCurrentCall1 := _Call(Tv7Session(Sender).GetItem(ID,''));

msickel 4. Mai 2008 13:19

Re: Delphi Code Umbauen
 
Danke erst mal, werde ich versuchen

Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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