نمایش نتایج 1 تا 22 از 22

نام تاپیک: تعمیر دی ال ال برای دیگر زبانها

  1. #1
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    Cool تعمیر دی ال ال برای دیگر زبانها

    سلام دوستان من قبلا یک تاپینگ گزاشتم برای اجرای دی ال ال برای زبانهای دیگر اما متاسفانه دوستان خوب توضیح ندادن و کامل متن فایل رو تغییر دادن اما من می خوام این دی ال ال به صورت زیر برای دیگر زبانها اماده بشود :

    فایل دی ال ال :

    library Project1;

    uses
    ShareMem,
    SimpleShareMem,
    Windows,
    Messages,
    SysUtils,
    Variants,
    Classes,
    Graphics,
    Controls,
    Forms,
    Dialogs,
    StdCtrls,
    StrUtils,
    ExtCtrls,
    ComCtrls,
    TabNotBk,
    HTTPApp,
    ColorGrd,
    DateUtils,
    Math;
    {$R *.res}
    function zman: string; stdcall; cdecl;
    VAR
    S1:STRING ;
    begin
    S1:= formatdatetime('HH:MM:SS',time);
    Result := S1;
    end;

    exports
    zman

    begin
    end.


    ممنون میشوم سریع جواب می دهید شاید بگید چرا در تاپینگ قبلی این پست رو نگذاشتم باید بگم که این فایل کاملا ماجراش جدا است گفتم شاید موضوعات با هم در هم شود ممنون می شوم سریع پاسخ بدید با تشکر از همه دوستان

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    اما من می خوام این دی ال ال به صورت زیر برای دیگر زبانها اماده بشود :
    dll که زبان حالیش نیست میتونید داخل همه زبانهای تقریبا سطح پایین استفاده کنید.
    البته خود dll باید در مورد کارهای داخلیش تعریفی داشته باشه تا بتوان ازش استفاده برد.

  3. #3
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام
    واقعیتش می خوام جوری این دی ال ال بیاد کار کنه که بتونم در زبانی مثلا مثل ویژوال بیسیک بتونم ازش استفاده کنم و یاد دادم کسی بتونه باهاش کار کنه نمی دونم چکار کنم این فایل رو که برای همه زبانها بشه استفادش کرد ممنون می شم راهنمایی کنید البته شکل نگارش این دی ال ال نمی خوام عوض بشه یعنی سبک دیگه اون رو بسازم ممنون می شوم سریع راهنمایی کنید با تشکر

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    نمی دونم چکار کنم این فایل رو که برای همه زبانها بشه استفادش کرد
    تا اونجایی که من اطلاع دارم اگر dll و توابع یا کدهای درونش را طوری طراحی کنید که برای استفاده نیاز به ارجاع به جاهای دیگری نداشته باشد یا اینکه اگر نیاز داشت آنرا به کاربر بصورت راهنما توضیح بدید مثلا بگید اگر تابع شماره 1 را استفاده میکنید حتما باید قلش تابع شماره 0 را اجرا کنید مشکلی دیگه ای نباشه.
    ولی درمورد اینکه با کدوم کامپایر مینوسید اصلا مشکلی نیست میتوانید داخل زبان دیگه ازش استفاده کنید.

  5. #5
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام
    یعنی من همین طور که نوشتم خوبه و میشه با همون نام زمان اون رو در زبانهای دیگه فراخوانی کنم ؟؟؟؟

  6. #6

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    برای فراخوانی در زبانهای دیگه همون اعلان stdcall; رو گزاشتین کافی هست
    چون فراخوانی پارامترها در دلفی از راست به چپ هست ولی در توابع ویندوز یا dll های استاندارد از چپ به راست هست

  7. #7

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    در همان تاپیک قبلی من گفتم که نوع فراخوانی را stdcall بگذارید و نوع برگشتی تابع رو هم به جای string به PWideChar تغییر دهید. من این روش رو بیش از 10 بار تا به حال تست کرده ام و نتیجه خوبی هم گرفته ام. PWideChar معادل همان String در دات نت است. اگر که میخواهید که از این dll در یک زبان قدیمی مثلاً vb6 استفاده کنید نوع برگشتی تابع را AnsiString بگذلرید که دقیقاً معادل string در vb6 است.

  8. #8
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام
    ممنو از پاسخهاتون ببخشید یک سوال برام خیلی مهمه جوابش
    من می خوام که این دی ال ال رو پخش در وب کنم و همه دوستان در همه زبانها بتونن از اون استفاده کنن حالا یا قدیمی یا جدید ایا میشه نوع استرینگ معادلش رو معرفی کرد که در همه زبانها بشه استفاده کرد آیا میشه یا فقط یک مدل میشه استفاده کرد ممنون می شوم بگید و اگر نمیشه ناچار هستم دو مدل که گفتید رو استفاده کنم تا همه زبانها رو ساپرت کنه ؟؟؟
    ممنون می شوم سریع پاسخ بدید با تشکر از همه شما دوستان

  9. #9

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام،
    اگر می خواهید که از dll ساخته شده بتوان در همه زبانها استفاده کرد باید نوع برگشتی را از نوع AnsiString قرار بدهید که همانطور که می دانید این برای زبان انگلیسی خوب است و برای زبان فارسی و بقیه زبانها زیاد جالب نیست. ولی اگر می خواهید که کاراکترهای برگشی از تابع مورد نظر یونیکد باشد باید پشتیبانی از زبانهای قدیمی مثل vb6 که از یونیکد پشتیبانی نمی کنند را فراموش کنید و نوع برگشتی تابع را از نوع pwidechar تعیین نمایید. نوع pwidechar که در دلفی وجود دارد معادل LPCWSRE در C++‎ و نوع string در دات نت است.

  10. #10
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام ممنون از راهنماییتون تنها مواردی برای من سواه که به این ترتیب هست :
    1-من چون اعداد هست و کاراکتر در کارم نیست پس از AnsiString ( ایا اگر باشد و به این صورت استفاده کنم فارسی هم باشد ایا مشکل به وجود می ارود)

    2- ایا بعد از استفاده به صورت بالا ایا باز باید ازstdcall; استفاده کرد ؟؟؟
    من زمانی که از stdcall; در اخز فانکشن هم استفاده می کنم در فایل اگزه فراخوانی درست انجام نمی شود و هیچی در فایل اگزه خوانده نمی شود اما بدون این به راهتی نمایش داده می شود البته این تست در خود فراخوانی در دلفی می باشد و در زبانهای دیگر انجام نشده و راستی پس اگر AnsiString استفاده بشود اون دی ال ال در وی بی 6 هم می شود استفاده کرد یا نه ممنون می شوم کامل پاسخ بدهید با تشکر فراوان دوست عزیز

  11. #11

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    نقل قول نوشته شده توسط nsco_nsco مشاهده تاپیک
    سلام ممنون از راهنماییتون تنها مواردی برای من سواه که به این ترتیب هست :
    1-من چون اعداد هست و کاراکتر در کارم نیست پس از AnsiString ( ایا اگر باشد و به این صورت استفاده کنم فارسی هم باشد ایا مشکل به وجود می ارود)
    اگه مقدار خروجی عددی هست چرا از Dword یا Integer یا Cardinal استفاده نمیکنین؟
    2- ایا بعد از استفاده به صورت بالا ایا باز باید ازstdcall; استفاده کرد ؟؟؟
    من زمانی که از stdcall; در اخز فانکشن هم استفاده می کنم در فایل اگزه فراخوانی درست انجام نمی شود و هیچی در فایل اگزه خوانده نمی شود اما بدون این به راهتی نمایش داده می شود البته این تست در خود فراخوانی در دلفی می باشد و در زبانهای دیگر انجام نشده و راستی پس اگر AnsiString استفاده بشود اون دی ال ال در وی بی 6 هم می شود استفاده کرد یا نه ممنون می شوم کامل پاسخ بدهید با تشکر فراوان دوست عزیز
    شما تو دلفی dll خودتونو تست میکنین احتمالا
    دلفی به صورت پیش فرض از فراخوانی Pascal استفاده میکنه وقتی شما میان از فراخوانی دیگه مثلا STDCALL استفاده میکنین موقع تعریف توابع تو برنامتون هم باید نوع فراخوانی رو قید کنین

    مثال از فراخوانی های مختلف در دلفی

    Demo DLL:

    library DemoDLL;

    uses
    Windows;

    function Test1(i: Integer; b: Boolean; d: Double): Integer; pascal;
    begin
    Result := Round(i * Ord(b) * d);
    end;

    function Test2(i: Integer; b: Boolean; d: Double): Integer; register;
    begin
    Result := Round(i * Ord(b) * d);
    end;

    function Test3(i: Integer; b: Boolean; d: Double): Integer; cdecl;
    begin
    Result := Round(i * Ord(b) * d);
    end;

    function Test4(i: Integer; b: Boolean; d: Double): Integer; stdcall;
    begin
    Result := Round(i * Ord(b) * d);
    end;

    exports
    Test1 index 1,
    Test2 index 2,
    Test3 index 3,
    Test4 index 4;

    begin
    end.


    فراخوانی توابع این dll در برنامه دلفی

    implementation

    {$R *.DFM}

    function Test1(i: Integer; b: Boolean; d: Double): Integer;
    pascal; external 'DEMODLL.DLL' Index 1;

    function Test2(i: Integer; b: Boolean; d: Double): Integer;
    register; external 'DEMODLL.DLL' Index 2;

    function Test3(i: Integer; b: Boolean; d: Double): Integer;
    cdecl; external 'DEMODLL.DLL' Index 3;

    function Test4(i: Integer; b: Boolean; d: Double): Integer;
    stdcall; external 'DEMODLL.DLL' Index 4;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    i: Integer;
    begin
    i := Test1(16, True, 1.0);
    i := Test2(16, True, 1.0);
    i := Test3(16, True, 1.0);
    i := Test4(16, True, 1.0);
    end;

  12. #12

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    راستی پس اگر AnsiString استفاده بشود اون دی ال ال در وی بی 6 هم می شود استفاده کرد یا نه?
    در رابطه با بقیه سوالات دوست خوبم پاسخ دادند. ولی در رابطه با این سوال باید بگویم که این طرز استفاده امکان پذیر است، چون نوع AnsiString که در دلفی موجود دارد معادل String در ویژوال بیسیک 6 است.

  13. #13
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    دوستان سلام
    ممنون از پاسختون مشکل حل شد فقط با اضافه کردن pascal; که شما گفتید مرسی

  14. #14
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام
    ببخشید یک سوال مهم
    ایا برای اینکه دی ا ل ال رو توضیح عمومی کنم ایا باید بگم که در هر زبان باید با چه نامی فراخوانیش کنن مثلا استرینگ و ... ممنون

  15. #15
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام به جز سوال بالا یک سوال دیگه هم داشتم
    آیا چیزی هست که معادل متغییر ها رو در زبانهای مختلف بگه عکسی فایلی و یا ... ممنون فقط سریع بهم بگید جز لازماته این دو تا سوال مرسی

  16. #16

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    ایا برای اینکه دی ا ل ال رو توضیح عمومی کنم ایا باید بگم که در هر زبان باید با چه نامی فراخوانیش کنن مثلا استرینگ و ... ممنون
    بله، همینطوره.
    آیا چیزی هست که معادل متغییر ها رو در زبانهای مختلف بگه عکسی فایلی و یا ... ممنون فقط سریع بهم بگید جز لازماته این دو تا سوال مرسی
    بله، من این معادلها را از کتاب برنامه نویسی سیستمی در ویندوز با توابع API نوشته آقای پژمان حسینی از انتشارات ناقوس استخراج می کنم. البته موقع استفاده از این کتاب توجه داشته باشید که در نسخه های جدید دلفی نوع این متغیرها مقداری تغییر کرده مثلاً قبلاً نوع string یک مقدار AnsiString را در خود جای می داده ولی اکنون یک مقدار UnicodeString را در خود جای می دهد.

  17. #17

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    تو لینک زیر متغییر های دلفی و معادل اون در C++‎ هست


    http://www.drbob42.com/delphi/headconv.htm

  18. #18
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام ممنون از پاسختون به خاطر اینکه نتونستم کتابی رو که می گید گیر بیارم یک سوال داشتم در صورت امکان اگر میشه معادل متغییر های دلفی را با زبانهای دیگر بگذارید ممنون و در صورتی که موجود نیست همون معادل AnsiString را بگذارید و یک سوال دیگر چرا می گید که نمیشه از کاراکتر فارسی استفاده کرد در متغییر AnsiString العان تست کردم شد ؟ ممنون میشم سریع پاسخ بدید با تشکر

  19. #19
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام
    هیچ کدوم از دوستان نمی دونن؟؟

  20. #20
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام دوستان
    ممنون می شوم کمکم کنید خیلی واجب هست با تشکر

  21. #21

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    چرا می گید که نمیشه از کاراکتر فارسی استفاده کرد در متغییر AnsiString العان تست کردم شد ؟
    من نگفتم که نمیشه، فقط گفتم که زیاد جالب نیست، چون موقعی که شما از AnsiString استفاده می کنید و می خواهید که کاراکتر فارسی را رد و بدل کنید حتماً باید زبان فارسی روی سیستم کاربر نصب شده باشد.
    اگر میشه معادل متغییر های دلفی را با زبانهای دیگر بگذارید ممنون و در صورتی که موجود نیست همون معادل AnsiString را بگذاری
    AnsiString که در دلفی وجود دارد معادل AnsiString در C++‎ و معادل String در vb6 است.

  22. #22
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

    نقل قول: تعمیر دی ال ال برای دیگر زبانها

    سلام
    ممنون از پاسخ شما اما یک سوال منظور شما از زبان فارس ایا همون کیبرد فارسی هست و یا خودمون فونت نصب کنیم؟؟؟ ممنون

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •