mike_p Opublikowano 22 Grudnia 2007 Udostępnij Opublikowano 22 Grudnia 2007 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Grudnia 2007 Administratorzy Udostępnij Opublikowano 22 Grudnia 2007 http://4programmers.net/Delphi/Artyku%C5%82y/Biblioteki_DLL albo http://4programmers.net/Delphi/Artykuły/Biblioteki_DLL nie wiem który link przeglądarka zaakceptuje Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mike_p Opublikowano 22 Grudnia 2007 Autor Udostępnij Opublikowano 22 Grudnia 2007 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'; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
g-Enjoy Opublikowano 22 Grudnia 2007 Udostępnij Opublikowano 22 Grudnia 2007 procedure ByteI; stdcall external '39lib.dll' name 'WriteByte'; Do Type: ByteI : Real; Tak, ma być w tym stylu ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mike_p Opublikowano 22 Grudnia 2007 Autor Udostępnij Opublikowano 22 Grudnia 2007 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? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
g-Enjoy Opublikowano 22 Grudnia 2007 Udostępnij Opublikowano 22 Grudnia 2007 Po zobaczeniu tego: global._BufA = external_define(global._39dll, "WriteByte", dll_cdecl, ty_real, 1, ty_real); Mogłem się pomylić ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mike_p Opublikowano 22 Grudnia 2007 Autor Udostępnij Opublikowano 22 Grudnia 2007 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
g-Enjoy Opublikowano 22 Grudnia 2007 Udostępnij Opublikowano 22 Grudnia 2007 Na trzecie. Drugie: Fakt, moja wina. Pierwsze: W implementation. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mike_p Opublikowano 22 Grudnia 2007 Autor Udostępnij Opublikowano 22 Grudnia 2007 Wtedy będę zmuszony zrobić deklarację procedury :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
g-Enjoy Opublikowano 22 Grudnia 2007 Udostępnij Opublikowano 22 Grudnia 2007 Racja... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 2 Stycznia 2008 Udostępnij Opublikowano 2 Stycznia 2008 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 :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
mike_p Opublikowano 3 Stycznia 2008 Autor Udostępnij Opublikowano 3 Stycznia 2008 O, dzięki bardzo :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 3 Stycznia 2008 Udostępnij Opublikowano 3 Stycznia 2008 https://forum.gmclan.org/index.php?showtopi...view=getnewpost zapraszam :) tu masz cały kod :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie 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ę poniżej.
Zaloguj się