Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Access Violation | IntraWEB 
V
    Опции темы
VOX
Дата 15.10.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 21.1.2009

Репутация: 1
Всего: 1



Здравствуйте! Сабж,
не знаю даже на что думать,
тот же код не под веб работает
нормально. Прошу подскажите
в чём моя ошибка. Спасибо!
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "IWBaseControl"
#pragma link "IWBaseHTMLControl"
#pragma link "IWCompButton"
#pragma link "IWCompText"
#pragma link "IWControl"
#pragma link "IWVCLBaseControl"
#pragma link "IWBaseComponent"
#pragma link "IWBaseHTML40Component"
#pragma link "IWBaseHTMLComponent"
#pragma link "IWExtCtrls"
#pragma link "IWCompMemo"
#pragma link "IWCompLabel"
#pragma link "IWCompEdit"
#pragma resource "*.dfm"
TIWForm1 *IWForm1;
const sourceLeft = 281;
const sourceTop = 196;
const  wchar_t ClassIdent[] =L"TMemo";
const int iCountButton = 21;
typedef struct
{
    char  wcsWindowText[256];
    TRect WinRect;
}
WINDOWPARAM, *PWINDOWPARAM;
bool __stdcall EnumFunc(HWND hWnd, LPARAM param);
//---------------------------------------------------------------------------
__fastcall TIWForm1::TIWForm1(TComponent* Owner)
        : TIWAppForm(Owner)
{

}
//---------------------------------------------------------------------------

void setAsMainForm() {
  TIWForm1::SetAsMainForm();
 }
#pragma startup setAsMainForm
bool __stdcall EnumFunc(HWND hWnd, LPARAM param)
{
    //Тело ф-ии
    WINDOWPARAM *sorceWindParam =(WINDOWPARAM*)param;
    char cname_needed[256] = "TMemo";
    char cname[256] = "";
    GetClassName(hWnd, cname, 256);
    char ctext[256] = "";
    SendMessage(hWnd, WM_GETTEXT, 255, (LPARAM)ctext);
    int res;
    res = strncmp(cname_needed,cname,99);
    if (res == 0 )
    {
    ::IWForm1->IWMemo1->Lines->Add(ctext);
    }
    return true;
}
void __fastcall TIWForm1::IWTimer1Timer(TObject *Sender)
{
//Перечисляем в мемо
    WINDOWPARAM WinParam = {0};
    IWMemo1->Lines->Clear();
    HWND hWnd = 0;
    hWnd = FindWindowW(L"TF_KgaViewMain" , NULL );
    EnumChildWindows (hWnd,(WNDENUMPROC)EnumFunc, (LPARAM)&WinParam);
//Добавляем Текст
    IWEdit40->Text=IWForm1->IWMemo1->Lines->Strings[0];
    IWEdit39->Text=IWForm1->IWMemo1->Lines->Strings[1];
    IWEdit38->Text=IWForm1->IWMemo1->Lines->Strings[2];
    IWEdit37->Text=IWForm1->IWMemo1->Lines->Strings[3];
    IWEdit36->Text=IWForm1->IWMemo1->Lines->Strings[4];
    IWEdit35->Text=IWForm1->IWMemo1->Lines->Strings[5];
    IWEdit34->Text=IWForm1->IWMemo1->Lines->Strings[6];
    IWEdit33->Text=IWForm1->IWMemo1->Lines->Strings[7];
    IWEdit32->Text=IWForm1->IWMemo1->Lines->Strings[8];
    IWEdit31->Text=IWForm1->IWMemo1->Lines->Strings[9];
    IWEdit30->Text=IWForm1->IWMemo1->Lines->Strings[10];
    IWEdit29->Text=IWForm1->IWMemo1->Lines->Strings[11];
    IWEdit28->Text=IWForm1->IWMemo1->Lines->Strings[12];
    IWEdit27->Text=IWForm1->IWMemo1->Lines->Strings[13];
    IWEdit26->Text=IWForm1->IWMemo1->Lines->Strings[14];
    IWEdit25->Text=IWForm1->IWMemo1->Lines->Strings[15];
    IWEdit24->Text=IWForm1->IWMemo1->Lines->Strings[16];
    IWEdit23->Text=IWForm1->IWMemo1->Lines->Strings[17];
    IWEdit22->Text=IWForm1->IWMemo1->Lines->Strings[18];
    IWEdit21->Text=IWForm1->IWMemo1->Lines->Strings[19];
    IWEdit20->Text=IWForm1->IWMemo1->Lines->Strings[20];
    IWEdit19->Text=IWForm1->IWMemo1->Lines->Strings[21];
    IWEdit18->Text=IWForm1->IWMemo1->Lines->Strings[22];
    IWEdit17->Text=IWForm1->IWMemo1->Lines->Strings[23];
    IWEdit16->Text=IWForm1->IWMemo1->Lines->Strings[24];
    IWEdit15->Text=IWForm1->IWMemo1->Lines->Strings[25];
    IWEdit14->Text=IWForm1->IWMemo1->Lines->Strings[26];
    IWEdit13->Text=IWForm1->IWMemo1->Lines->Strings[27];
    IWEdit12->Text=IWForm1->IWMemo1->Lines->Strings[28];
    IWEdit11->Text=IWForm1->IWMemo1->Lines->Strings[29];
    IWEdit10->Text=IWForm1->IWMemo1->Lines->Strings[30];
    IWEdit9->Text=IWForm1->IWMemo1->Lines->Strings[31];
    IWEdit8->Text=IWForm1->IWMemo1->Lines->Strings[32];
    IWEdit7->Text=IWForm1->IWMemo1->Lines->Strings[33];
    IWEdit6->Text=IWForm1->IWMemo1->Lines->Strings[34];
    IWEdit5->Text=IWForm1->IWMemo1->Lines->Strings[35];
}
//---------------------------------------------------------------------------


PM MAIL   Вверх
586
Дата 15.10.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата(VOX @  15.10.2009,  16:35 Найти цитируемый пост)
bool __stdcall EnumFunc(HWND hWnd, LPARAM param)

bool и BOOL - это разные вещи. sizeof(BOOL) == 4, sizeof(bool) == 1.

Код
BOOL CALLBACK EnumFunc(HWND hWnd, LPARAM param)
{
    //WINDOWPARAM *sorceWindParam =(WINDOWPARAM*)param;  // нигде не используется...
    char cname[256] = "";
    GetClassName(hWnd, cname, 256);
    char ctext[256] = "";
    SendMessage(hWnd, WM_GETTEXT, 255, (LPARAM)ctext);

    if (strcmp(cname, "TMemo") == 0)
    {
        ::IWForm1->IWMemo1->Lines->Add(ctext);
    }
    return TRUE;
}

PM   Вверх
shklowsky
Дата 16.10.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.7.2009

Репутация: 5
Всего: 6



думаю, причина здесь:

Цитата(VOX @  15.10.2009,  15:35 Найти цитируемый пост)
void __fastcall TIWForm1::IWTimer1Timer(TObject *Sender)


При небольшом значении интервала(или длительной обработки процедуры)
Таймер при входе в onTimer надо бы остановить, при выходе снова запустить.
иначе возможны "налезания " тиков таймера один на другой, и, как результат,
конфликт доступа потоков к компоненту.

PM MAIL   Вверх
VOX
Дата 16.10.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 21.1.2009

Репутация: 1
Всего: 1



Всем спасибо + и +
Решено!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.