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

نام تاپیک: نوشتن و اجرا برنامه بدون ایجاد فرم

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Iran
    پست
    1,035

    نوشتن و اجرا برنامه بدون ایجاد فرم

    سلام

    آیا می شود برنامه ای نوشت که فرم ایجاد نکنیم اما برنامه قابل اجرا باشد چون دلفی نیاز حتما به یک فرم دارد

    سوال دوم : آیا می شود برنامه ای یا تایع را قبل از اجرا فرم اصلی فراخوانی کرد مثل من برنامه ActiveX نوشتم باید قبل از فرم اصلی خوانده شود

    با تشکر از دوستان عزیز
    مرتضی

  2. #2
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    آیا می شود برنامه ای نوشت که فرم ایجاد نکنیم اما برنامه قابل اجرا باشد چون دلفی نیاز حتما به یک فرم دارد
    بله، میشه، اما دقیقا میخواهید برنامه موردنظر چه کاری انجام دهد؟

    آیا می شود برنامه ای یا تایع را قبل از اجرا فرم اصلی فراخوانی کرد
    بله.
    از منوی Project گزینه View Source را انتخاب کنید. چیزی که می‌بینید چنین چیزی خواهد بود:
    program Project1;

    uses
    Forms,
    Unit1 in 'Unit1.pas' {Form1};

    {$R *.res}

    begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
    end.

    دستورات مورد نظر را قبل از <span dir=ltr>Application.Initialize;</span> اضافه کنید.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Iran
    پست
    1,035
    سلام

    در مورد سوال اول فرض می خواهیم برنامه به نام Register بنویسیم که یک ActiveX را روی سیستم نصب کند بدون اینکه فرم یا پیغامی بدهد

    در مورد دوم من برنامه Activex نوشتم می خواهم قبل از اینکه فرم ایجاد شود برنامه ActiveX اجرا شود و نصب پس قیا ایجاد فرم بگذارم یعنی می خواهم تابع Ceartocx اجرا کنم این تایع در یونیت ACTOCX وجود دارد

    با تشکر از تمامی دوستان
    مرتضی

  4. #4
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    به این مثال توجه کنید.

    نکته 1: این مثال برای تست اینکه ActiveX رجیستر شده یا نه ابتدا سعی میکند یک نمونه از آن را ایجاد کند. اگر عملیات ایجاد با مشکل مواجه شد نشانه آن است که ActiveX قبلا رجیستر نشده است و بنابراین آنرا رجیستر میکند.

    نکته 2: برای بوجود آوردن یونیت ShockwaveFlashObjects_TLB و یا هر یونیت Type Library دیگری (TLB) کافی است از منوی کامپوننت ActiveX مورد نظر را Import کنید. فایل TLB مربوطه بطور خودکار ساخته خواهد شد و سپس میتوانید آنرا در برنامه تان Use کنید.


    program Project1;

    uses
    ShockwaveFlashObjects_TLB,
    Dialogs,
    Windows,
    SysUtils,
    Classes,
    Controls,
    Forms,
    Unit1 in 'Unit1.pas' &#123;Form1&#125;

    &#123;$R *.RES&#125;

    &#123; Function GetWinSysDir&#40;&#41; &#125;
    function GetWinSysDir&#58; string;
    var
    n&#58; integer;
    p&#58; PChar;
    begin
    n &#58;= MAX_PATH;
    p &#58;= stralloc&#40;n&#41;;
    getsystemdirectory&#40;p, n&#41;;
    Result &#58;= Result + strpas&#40;p&#41;;
    end;

    &#123;Function CopyFile&#40;&#41; &#125;
    procedure Copyfile&#40;InFile, OutFile&#58; string&#41;;
    var
    Inf, Outf&#58; TFileStream;
    Over&#58; Boolean;
    res&#58; word;
    InFFale, OutFFale&#58; boolean;
    begin
    if FileEXists&#40;InFile&#41; then
    begin
    if FileExists&#40;OutFile&#41; then
    begin
    // Res &#58;= MessageDlg&#40;'Do you want to overwrite existing file?', mtWarning,
    // &#91;mbYes, mbNo&#93;, 0&#41;;
    // Over &#58;= &#40;Res = mrYes&#41;;
    Over&#58;=True;
    end
    else
    Over &#58;= true;
    inffale &#58;= false;
    outffale &#58;= false;
    if over then
    begin
    try
    try
    InF &#58;= TFileStream.Create&#40;Infile, Fmopenread or fmShareDenyNone&#41;;
    except
    on e&#58; Exception do
    inffale &#58;= true;
    end;
    try
    OutF &#58;= TFileStream.create&#40;Outfile, FmCreate or FmShareExclusive&#41;;
    except
    on E&#58; Exception do
    outfFale &#58;= true
    end;
    outf.copyfrom&#40;Inf, 0&#41;;
    finally
    if not inffale then
    FreeAndNil&#40;Inf&#41;;
    if not outfFale then
    FreeAndNil&#40;outF&#41;;
    end;
    end;
    end;
    end;

    &#123;Function RegisterOCX&#40;&#41; &#125;
    function RegisterOCX&#40;OcxFilename&#58; string&#41;&#58; Boolean;
    var
    hDll&#58; THandle;
    pFunc&#58; function&#58; Integer;
    nResult&#58; Integer;
    begin
    &#123; This sample implies that the dll is in the PATH &#125;
    hDll &#58;= LoadLibrary&#40;pchar&#40;OcxFilename&#41;&#41;;
    if hDll = 0 then
    MessageDlg&#40;'Cannot load library ' + OcxFilename, mtError, &#91;mbOK&#93;, 0&#41;
    else
    begin
    pFunc &#58;= GetProcAddress&#40;hDll, 'DllRegisterServer'&#41;;

    if not Assigned&#40;pFunc&#41; then
    MessageDlg&#40;'Library does not export function DllRegisterServer.',
    mtError, &#91;mbOK&#93;, 0&#41;
    else
    begin
    nResult &#58;= pFunc&#40;&#41;;

    if nResult &lt;> 0 then
    result &#58;= false
    else
    result &#58;= true;
    end;
    FreeLibrary&#40;hDll&#41;;
    end;

    end;

    &#123; Program Main Body&#125;
    var
    p&#58; TShockwaveFlash;

    begin
    try
    p &#58;= TShockwaveFlash.Create&#40;nil&#41;;
    except
    //ShowMessage&#40;'Flash Player Not Installed'&#41;;
    if &#40;FileExists&#40;GetWinSysDir + '\Macromed\Flash\Flash.ocx'&#41;&#41; then
    begin
    RegisterOCX&#40;GetWinSysDir + '\Macromed\Flash\Flash.ocx'&#41;;
    end
    else
    begin
    If Not&#40;FileExists&#40;GetWinSysDir + '\Flash.ocx'&#41;&#41; Then
    CopyFile&#40;ExtractFilePath&#40;Application.exena me&#41;+'Flash.ocx', GetWinSysDir + '\Flash.ocx'&#41;;
    RegisterOCX&#40;GetWinSysDir + '\Flash.ocx'&#41;;
    end;
    end;
    Application.Initialize;
    Application.CreateForm&#40;TForm1, Form1&#41;;
    Application.Run;
    end.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Iran
    پست
    1,035
    با سلام و تشکر

    من DELPHI 5 دارم برنامه که می خواهم اجرا کنم به اولینFunction که می رسد Error می دهد
    پیغام خطا این است

    &#91;Error&#93; Project1.dpr&#40;16&#41;&#58; ',' or ';' expected but 'FUNCTION' found


    با تشکر

  6. #6
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    فکر کنم منظورش اینه که باید
    Unit1 in 'Unit1.pas'

    را بصورت
    Unit1 in 'Unit1.pas';

    تغییر دهید :)

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

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