Skocz do zawartości

Rekomendowane odpowiedzi

Chciałbym przenieść serwer do sitda na Delphi, tylko do tego potrzebna będzie obsługa 39dlla.

 

W przykładach z Marbs Online :F jest funkcja dll_init(), w której są rzeczy typu

global._BufA = external_define(global._39dll, "WriteByte", dll_cdecl, ty_real, 1, ty_real);

 

I jak ja to mam teraz zapisać w Delphi? :| Jest zdaje się takie coś:

procedure <nazwawprogramie>; stdcall external '<ścieżkadlla>' name '<nazwawdllu>';

Tylko czy to zawsze jest procedura? I jak tu zapisać argumenty? :F

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

No wiem, tylko jak to się ma do tego w GM :P

 

Ma być coś w tym stylu?

 

procedure _BufA(a: real); stdcall external '39dll.dll' name 'WriteByte';

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

procedure ByteI; stdcall external '39lib.dll' name 'WriteByte';

 

Do Type:

ByteI : Real;

 

Tak, ma być w tym stylu ;P

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

No chyba jednak nie :P

1. Gdzie mam dać to rocedure ByteI; stdcall external '39lib.dll' name 'WriteByte';?

2. Jak niby wg ciebie mam dać to do Type (chyba że w którym miejscu type)?

3. Jak procedura może być nagle realem?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Po zobaczeniu tego:

global._BufA = external_define(global._39dll, "WriteByte", dll_cdecl, ty_real, 1, ty_real);

 

Mogłem się pomylić ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Przyznam szczerze, że nie zrozumiałem :P Twój powyższy post był odpowiedzią na które pytanie?

 

@DOWN To odpowiedz na resztę :F

A ten ty_real jest typem argumentu którego używamy w tej procedurze.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Na trzecie.

Drugie: Fakt, moja wina.

Pierwsze: W implementation.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Wtedy będę zmuszony zrobić deklarację procedury :/

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

ja już mam przepisane to na delphi bo sam pisze server dla potomnych :P może później ci podrzucę to :) pamiętaj że ty_real musi być zadeklarowane w delphi jako Double a ty_string jako pchar! :) używaj też pointerów...

 

EDIT

 

unit dll39;

interface

//buffer write
function WriteByte(data:double):double; cdecl; external '39dll.dll';
function WriteString(data:pchar;writesize:double):double; cdecl; external '39dll.dll';
function WriteShort(data:double):double; cdecl; external '39dll.dll';
function WriteInt(data:double):double; cdecl; external '39dll.dll';
function WriteFloat(data:double):double; cdecl; external '39dll.dll';
function WriteDouble(data:double):double; cdecl; external '39dll.dll';

//buffer read                                           
function ReadByte():double; cdecl; external '39dll.dll';
function ReadString(size:double;separator:pchar):pchar; cdecl; external '39dll.dll';
function ReadShort():double; cdecl; external '39dll.dll';
function ReadInt():double; cdecl; external '39dll.dll';
function ReadFloat():double; cdecl; external '39dll.dll';
function ReadDouble():double; cdecl; external '39dll.dll';

//buffer other
function ClearBuffer():double; cdecl; external '39dll.dll';
function SetPos(pos:double):double; cdecl; external '39dll.dll';
function GetPos(pos:double):double; cdecl; external '39dll.dll';
function BufferSize():double; cdecl; external '39dll.dll';
function CreateBuffer():double; cdecl; external '39dll.dll';

implementation

end.

jutro podam resztę jak znajde czas... (name nie jest konieczne jeżeli nie musisz zmienić nazwy funkcji)

 

http://host-a.net/39ster/39dllV25.zip tu masz source w C++ jak chodź trochę znasz to napewno przetłumaczysz na delphi deklaracje według mojego wzoru :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

O, dzięki bardzo :thumbsup:

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×