الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حول البروسس مسج؟؟

مغلق
بدأه essam7 في 2 أكتوبر 2005 · 5 رد · 711 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عملت برنامج داخله تعليمة

urlmon.URLDownloadToFile(ca, PAnsiChar(st), 'filename.htm', 1, stat);

وهي ضمن المكتبة urlmon

تقوم بحفظ صفحة اتش تي ام ال في ملف على الهارد

المهم عند عمل البرنامج لينزل عدة صفحات يعلق أي لا أستطيع أن أغلقه الا بألت كنترول ديليت

البرنامج على عدة مراحل لم اعرف أين أضع application.processmessages تماما ليعمل البرنامج بتجاوب مع المستخدم

فوضعتها تحت التعليمة السابقة لكن كل صفحة تتحمل وقت حوالي 5 ثوان ومن غير المعقول توجيه رسائل الوندوز كل 5 ثوان فهي مدة

طويلة

المهم وضعت تايمر كل ثانية يقوم بالبروسس مسج ومع ذلك لا يتجاوب الفورم من تحريك وتصغير و الخ

حتى الاغلاق لا يغلق !!!!!

ما العمل ؟؟؟

يوجد من قال استخدم الثريد لكن لا أعرف عنها شيئ

أنا الان أعتقد البروسس مسج تفي بالغرض لكن أين أضعها

كما قلت تايمر كل ثانية وما مشي الحال !!! ليش؟؟

#2

ال thread هي الطريقة المفضلة في هذه الحالة

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  THttpThread = class(TThread)
    private
      FDownloadFrom, FDownloadTo : string;
    protected
    constructor create(DownloadFrom, DownloadTo: string);
    procedure execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
uses
  URLMon;

procedure TForm1.Button1Click(Sender: TObject);
var
   HttpThread: THttpThread;
begin
  HttpThread := THttpThread.create('http://www.rarlab.com/rar/pocketrar330.exe','c:\test.exe');
  HttpThread.Resume;
end;

{ HttpThread }

constructor THttpThread.create(DownloadFrom, DownloadTo: string);
begin
  inherited create(true);
  FDownloadFrom := DownloadFrom;
  FDownloadTo := DownloadTo;
end;

procedure THttpThread.execute;
begin
  inherited;
  UrlDownloadToFile(nil, PChar(FDownloadFrom), PChar(FDownloadTo), 0,nil);
  ShowMessage('done');
end;

المثال السابق عملته بإستخدام ال Threading من اجل سؤال في موقع EE، وتجد مزيد من التفصيل هنا

http://www.experts-exchange.com/Programmin...Q_21019492.html

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#4

و أردت إستخدام مكونات Indy

procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  ProgressBar1.Max:=AWorkCountMax;
end;

procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  ProgressBar1.Position:=AWorkCount;
  Application.ProcessMessages;
end;

procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
  s:=IdHTTP1.Get('http://www.mysite.com/files/file2get.dat');
  ProgressBar1.Position:=0;
  ShowMessage('done');
end;
d4baa0.gif
#5

شكرا لكم جميعا

وسأجرب الكود ان شاء الله

لكن توقعت ما حدا رد وصدفة فايت عالموقع لأني وضعت الابلاغ بالبريد بس ما بعرف شو المشكلة

تحصل كثيرا معي

المشكله من المنتدى أم مني؟؟؟

على كل شكرا جزيلا وبس تضبط معي لحتى نزل البرنامج فهو خاص لعرب تيم 2000

#6

المشكلة في المنتدى

انا لا يصلني الابلاغ البريدي من فترة

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

هذا الموضوع مغلق.

مواضيع مشابهة