Autor Beitrag
INeedHelp
Hält's aus hier
Beiträge: 2

WIN XP
D8 Prof.
BeitragVerfasst: Do 16.09.04 11:29 
Hier der Quellcode in Auszügen, der im Original aus einem C#-Programm kommt.
Wenn Bedarf am C#-Quellcode besteht, kann dieser auch zugesendet werden.
Was ist hier falsch?

:?:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
unit csExample;

interface

uses Schulze.Notification,
     Schulze.Service,
     Schulze.StrokeRenderer,
     Schulze.Common,
     System.Collections,
     System.Data,
     System.Drawing,
     System.IO,
     System.Windows.Forms;


type PenInterface = interface (Schulze.Notification.IServiceApplication)
     ['{FD1DB8F0-FE2F-477C-9A97-24FD5608F91F}']
    function Notify(service:string; data:System.Object): System.Object;
    function get_Service: string;
      property Service: string read get_Service;
    function CreateDate(pStartSecond: Integer; pStartMillisecond: Integer):
                       DateTime; //virtual; static;
  end;
//  NotifyClass = class (TObject, PenInterface)
//  end;

implementation

{$AUTOBOX ON}
{$WARNINGS OFF}

function get_Service:string;
begin
  Result:='tutorial::csexample';
end;

function Notify(Service:string; data:System.Object):System.Object;
var
  wini:System.Windows.Forms.Form;
  f: Font;
  grf:Graphics;
  fileSchulze,path:string;
  bmp:Image;
  mDate:DateTime;
  ....
  ....

begin
  ret:=nil;
  fileSchulze:='';
  try
    ...
    request.Initialize(data);
    ...
    try
      ...
      milli:=0;
      seco:=0;
      while ... do
        begin
          ...
        end;

    except
      on System.Exception do
         ...;
    end;
    ...;
  except
    on System.Exception do
    ;
  end;
  Result:=ret;
end;


function CreateDate(pStartSecond:Integer;pStartMillisecond:Integer):DateTime;
var date:DateTime;
begin
  date:=DateTime.Create(1970,1,1);
  date:=date.AddSeconds(pStartSecond);
  date:=date.AddMilliseconds(pStartMillisecond);
  Result:=date;
end;

end.


Moderiert von user profile iconUdontknow: Delphi-Tags hinzugefügt.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 16.09.04 11:35 
Hallo!

Zunächst einmal zwei Hinweise: Immer die Fehlermeldung(en) mitschreiben und die Delphi-Tags für Quellcode verwenden. :wink:

Ähm, irgendwie sehe ich hier keine Klasse. Nur Klassen können Interfaces implementieren, du hast da aber nur normale Funktionen und Prozeduren.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
type TMeineKlasse=class(TObject,PenInterface)
  public
    function Notify(service:string; data:System.Object): System.Object;  
    function get_Service: string;  
      property Service: string read get_Service;  
    function CreateDate(pStartSecond: Integer; pStartMillisecond: Integer):  
                       DateTime; //virtual; static;  
  end;



Cu,
Udontknow
INeedHelp Threadstarter
Hält's aus hier
Beiträge: 2

WIN XP
D8 Prof.
BeitragVerfasst: Fr 17.09.04 12:23 
Ich habe die Angaben entsprechend umgesetzt und in den Code eingebunden. Leider kommt der Compiler beim Compilieren des Packages nun mit folgender Meldung:

[Fehler] csExample.pas(27): Ungenügende Forward- oder External-Deklaration: 'NotifyClass.Notify'. :(
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Fr 17.09.04 13:08 
Gleich vorweg: Ich empfehle dir ganz dringend ein Tutorial in Sachen OOP in Delphi, fang nicht gleich mit Interfaces an, wenn du OOP nicht beherrscht.

Du hast die Methoden der Klasse deklariert, aber nicht implementiert. Im Implementation-Teil der Unit müssen die Implementationen der Methoden erfolgen. Im Endeffekt also einfach die vorherigen Funktionen mit dem Headervorsatz "TNotifyClass".


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
function TNotifyClass.Notify(Service:string; data:System.Object):System.Object;
begin
  //Hier der Code, der ausgeführt werden soll
  ...
end;


Cu,
Udontknow