Hallo an alle!!!
Ich habe ein Problem. Ich bin eingentlich C Programmierer. Muss aber jetzt in Delphi einsteigen. Und ich habe sehr viele gute C programme die ich weiter benutzen will, aber mit Delphi. Die Frage ist geht es oder nicht. Mir wurde gesagt, dass man die Funktionen aus eine C Objektdatei benutzen kann. Irgendwie funktioniert es bei mir nicht.
Ich habe folgendes versucht:
unit prog;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
type MEMLOCK = THandle;
type PMEMLOCK = ^THandle;
implementation
{$R *.DFM}
{$L memlock.OBJ}
{$L memmap.OBJ}
procedure memLockDestroy(s:MEMLOCK);external;
function memLockOpen(key:Integer; s :PMEMLOCK):Integer; external ;
end.
Die funktionen memLockDestroy und memLockOpen sind in C so:
int memLockOpen( int key, MEMLOCK *s)
{
#ifdef _WIN32
char semname[30];
sprintf( semname, "sem%08x", key);
*s = OpenSemaphore( SEMAPHORE_ALL_ACCESS, FALSE, semname);
return (*s != NULL)? 0 : -1;
#else
*s = semget( key, 1, 0);
return (*s >= 0)? 0 : -1;
#endif
und:
void memLockDestroy( MEMLOCK s)
{
#ifdef _WIN32
CloseHandle( s);
#else
semctl( s, 0, IPC_RMID);
#endif
}
WAS MACHE ICH FALSCH????? WEIß DA JEMAND RAT????
Ich habe ein Problem. Ich bin eingentlich C Programmierer. Muss aber jetzt in Delphi einsteigen. Und ich habe sehr viele gute C programme die ich weiter benutzen will, aber mit Delphi. Die Frage ist geht es oder nicht. Mir wurde gesagt, dass man die Funktionen aus eine C Objektdatei benutzen kann. Irgendwie funktioniert es bei mir nicht.
Ich habe folgendes versucht:
unit prog;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
type MEMLOCK = THandle;
type PMEMLOCK = ^THandle;
implementation
{$R *.DFM}
{$L memlock.OBJ}
{$L memmap.OBJ}
procedure memLockDestroy(s:MEMLOCK);external;
function memLockOpen(key:Integer; s :PMEMLOCK):Integer; external ;
end.
Die funktionen memLockDestroy und memLockOpen sind in C so:
int memLockOpen( int key, MEMLOCK *s)
{
#ifdef _WIN32
char semname[30];
sprintf( semname, "sem%08x", key);
*s = OpenSemaphore( SEMAPHORE_ALL_ACCESS, FALSE, semname);
return (*s != NULL)? 0 : -1;
#else
*s = semget( key, 1, 0);
return (*s >= 0)? 0 : -1;
#endif
und:
void memLockDestroy( MEMLOCK s)
{
#ifdef _WIN32
CloseHandle( s);
#else
semctl( s, 0, IPC_RMID);
#endif
}
WAS MACHE ICH FALSCH????? WEIß DA JEMAND RAT????