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

نام تاپیک: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B55

  1. #1
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B55

    با سلام خدمت دوستان
    من تو برنامم از IdTCPClient1 استفاده کرده ام و برای اینکه بتونم با اون سند و رسیو داشته باشم از دستور زیر استقاده کردم
    type
    TReadingThread = class(TThread)

    protected
    FConn: TIdTCPConnection;
    procedure Execute; override;
    public
    constructor Create(ACon: TIdTCPConnection); reintroduce;
    end;
    .
    .
    .

    var
    Form1: TForm1;
    ReadingThread : TReadingThread;

    implementation

    {$R *.dfm}

    constructor TReadingThread.Create(ACon: TIdTCPConnection);
    begin
    FConn := ACon;
    inherited Create(False);
    end;

    procedure TReadingThread.Execute;
    var s : string;
    begin
    while not Terminated do
    begin
    //FConn.ReadFromStack(True, 1000, False);

    //if FConn.InputBuffer.Size > 0 then
    //begin
    s := FConn.CurrentReadBuffer;
    if Length(S) > 0 then
    Form1.Memo1.Lines.Add(s);
    //end;
    end;
    end;



    حالا برای ارسال پیام هم از دستور IdTCPClient.Write(Text); استفاده میکنم ولی برنامم خطای عنوان شده را میده و کلا هنگ میشه
    دوستان کسی میتونه راهنمائیم کنه؟

  2. #2

    نقل قول: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B5

    من هر چی کدتو خوندم سر در نیاوردم.
    اگه ممکنه کدتو به صورت کامل بزار.
    در ضمن حواست باشه با اشیا(ممو) به صورت مستقیم در ترد ارتباط برقرار نکن.


  3. #3
    کاربر دائمی آواتار SayeyeZohor
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ا-ص-ف-ه-ا-ن
    پست
    631

    نقل قول: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B5

    اول بايد Thread ت رو Create كني
    TReadingThread.Create(False);

    بعد دستورت رو بنويسي
    خب بايدم Access Voliation بده
    البته دستورت هم واضح نيست

  4. #4
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B5

    با عرض پوزش
    اينها رو هم نوشته بودم اما خطا ميده.
    procedure TSettings.IdTCPClient1Connected(Sender: TObject);
    begin

    try
    if ReadingThread <> nil then
    begin
    ReadingThread.WaitFor;
    FreeAndNil(ReadingThread);
    end;
    except end;

    try
    ReadingThread := TReadingThread.Create(IdTCPClient1);
    except
    IdTCPClient1.DisconnectSocket;
    //raise;
    end;

    end;

    procedure TSettings.IdTCPClient1Disconnected(Sender: TObject);
    begin

    if ReadingThread <> nil then
    begin
    ReadingThread.WaitFor;
    FreeAndNil(ReadingThread);
    end;

    end;

  5. #5
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B5

    نقل قول نوشته شده توسط Mask مشاهده تاپیک
    من هر چی کدتو خوندم سر در نیاوردم.
    اگه ممکنه کدتو به صورت کامل بزار.
    در ضمن حواست باشه با اشیا(ممو) به صورت مستقیم در ترد ارتباط برقرار نکن.
    با عرض سلام
    ببخشید منظورتون چیه؟
    پس به چه صورتی باید تکست دریافتی از شبکه رو ببرم تو ممو و ثبتش کنم؟

  6. #6

    نقل قول: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B5

    مهندس کدتون ایراد اساسی داره باید اصلاح بشه.
    هدفتون رو بگین. تا بشه کدی براش نوشت.


  7. #7
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B5

    یه جاهایی خوندم که این خطا مربوط به باگ ریچ ادیت در ویندوز XP هست و باید DLL رو عوض کرد.

  8. #8
    کاربر دائمی آواتار seyed_farid
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    459

    نقل قول: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B5

    الان این بخش از گیرنده رو در نظر بگیرید.
    procedure TReadingThread.Execute;
    var s : string;
    begin
    while not Terminated do
    begin
    s := FConn.CurrentReadBuffer;
    if Length(S) > 0 then
    Form1.Memo1.Lines.Add(s);
    //end;
    end;
    end;

    در بخشی که با ممو میخوام کار کنم. ایرادی داره؟

  9. #9

    نقل قول: خطای Access violation at address 74E35B3E in module 'RICHED20.dll'. Read of address 83EC8B5

    زمان استفاده از Thread ها باید چند مورد رو رعایت کنید، یکی از موارد مهم اینه که از درون متد Execute با اشیای Visual ارتباط مستقیم برقرار نکنید
    برای نوشتن بر داخل Memo یا می تونید از Message ها استفاده کنید یا اینکه یک متد در کلاس Thread تعریف کنید برای نوشتن در Memo و اون رو با دستور Synchronize فراخوانی کنید
    برای هر دو مورد قبلا در سایت توضیحات و نمونه قرار داده شده، کمی جستجو کنید به نتیجه میرسید
    نحوه کار با کامپوننتهای Indy هم در کدی که قرار دادید درست نیست
    در رویداد Connected چرا باید Thread رو Create کنید ؟
    مهم ترین اصل در کار با Thread ها اینه که تداخل بین تردها رو از بین ببرید، در کد شما TCPClient در Thread اصلی ساخته میشه، در یک Thread جداگانه استفاده میشه و همزمان برای رویدادهای اون هم کد نوشته شده که این کد ها در Thread اصلی اجرا میشن
    کمی در مورد Thread ها تحقیق کنید و نمونه های موجود رو ببینید، کدی که نوشتید شما رو به نتیجه نمیرسونه

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

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