Вопрос № 31030: Здравствуйте!
Запарился искать ответ на свой вопрос, подскажете хотыбы где поискать на него ответ, может кто знает какие-нибудь
экспертные системы где это за деньги делают(если такие вообще есть) может кто людей знает соответствующей квалифи...Вопрос № 31032: Здравствуйте!
Пожалуйста помогите мне найти самую лучшую среду для хранения битов и совершения действий над ними.
Допустим у меня есть некия последовательность из бит 0101010011101001010111001, в long это врядли запишешь длины не хватит,...Вопрос № 31036: Здравствуйте!помогите пожалуста ,мне надо считать данные из файла в Edit,только так, чтобы данные из первой строки файла записывались в Edit1,из второй в Edit2 и т.д....Вопрос № 31043: Уважаемые эксперты ! Подскажите, пжлста, как вставить в программу на Си подпрограмму на Ассемблере.
ОС Unix, компилятор Watcom CC++...Вопрос № 31061: Здравствуйте .
У меян вопрос.. Возможно ли такое :
Допустим в браузере Опера мы открыли документ Html , в этом докупенте нарисована кнопка ... Можно ли нажать кнопку программно.. если можно то как? ..
Среда Билдер 6
Спасибо....
Вопрос № 31.030
Здравствуйте!
Запарился искать ответ на свой вопрос, подскажете хотыбы где поискать на него ответ, может кто знает какие-нибудь
экспертные системы где это за деньги делают(если такие вообще есть) может кто людей знает соответствующей квалификации,
буду рад любой форме помощи. Спасибо. Вопрос собственно вот:
На обработчике кнопки простой код (Windows XP, VC++ 6.0, MFC) :
После CreateProcess неро благополучно старует, но после первого окна, где происходит распаковка файлов во временный
каталог, останавливается и ждет пока мы выйдем из цикла while. А мы ждем ее.... В итоге оба процесса стоят. Почему?
Это происходит с дистрибутивами, которые сначала распаковываются во временные файлы, а потом стартуют оттуда новыми
процессами. С остальными приложениями все в порядке. Почему это происходит? И самое главное как это обойти. Еще
дополнение. На быстрых компах все нормально. Там где атлоны и итаниумы 64 разрядные стоят и памяти 512 Мб. А происходит это
на пнях 3 и даже на Sempron 2800+ с 256 Мб на борту. Вопрос не решается уже 2 неделю ;-( Пробовал уже и ShellExecuteEx и
WinExec и из другого потока и даже другого процесса запускать. Безрезультатно. В чем дело?
Отправлен: 07.12.2005, 23:29
Вопрос задал: gvozdok (статус: 5-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Slava_
Здравствуйте, gvozdok!
Уточни такой момент:
Если параметр dwCreationFlags функции CreateProcess установлен как CREATE_SUSPENDED,
то сразу после создания процесса его главная задача будет находиться в приостановленном состоянии. Работу этой задачи можно возобновить при помощи функции ResumeThread:
DWORD STDCALL ResumeThread(HANDLE);
Ответ отправил: Slava_ (статус: 1-ый класс)
Отправлен: 08.12.2005, 22:50 Оценка за ответ: 5
Отвечает: Raptor1
Здравствуйте, gvozdok!
Проблема может быть в том, что такой цикл
while(TRUE)
{
if(::FindWindow("Nero Setup")!=NULL)
break;
}
отъедает слишком много ресурсов процессора, поэтому у тебя процесс Nero не ждет, а просто запускается медленно, а на быстрых компах соответственно быстро. Как вариант можно попробовать это решить путем понижения приоритета твоей программы, в которой цикл. Это можно сделать с помощью SetPriorityClass с параметром THREAD_PRIORITY_LOWEST или THREAD_PRIORITY_BELOW_NORMAL
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 08.12.2005, 23:07 Оценка за ответ: 5 Комментарий оценки: спасибо, попробую, может поможет ;)
Вопрос № 31.032
Здравствуйте!
Пожалуйста помогите мне найти самую лучшую среду для хранения битов и совершения действий над ними.
Допустим у меня есть некия последовательность из бит 0101010011101001010111001, в long это врядли запишешь длины не хватит, да и памяти много съест, но зато если и записать в лонг, легко работать. Можно записать в массив bool, но тут уже обращаться к каждому элементу... короче получается не важно.
Есть ли у вас какие-нибудь предложения?
Отвечает: Muad Dib
Здравствуйте, Константин Константинович!
В long int влезает точно, а в нектоторых операционных системах размеры long int равняются размерам int - 32 бита. У вас - даже меньше.
Ответ отправил: Muad Dib (статус: 1-ый класс)
Отправлен: 07.12.2005, 23:58
Отвечает: PROD
Здравствуйте, Константин Константинович!
"режь" последовательно кучками по n бит, переводи в десятичную систему и сохраняй в массиве инт или лонг. Я не знаю какие ты будешь с ними действия проводить, но пока мне непонятно чем тебе массив bool не понравился.
если последовательность не очень длинная то в строку засунуть можно, если эту последовательность нужно именно хранить а не постоянно обрабатывать то в строках ее можно сжать (за архивировать), хотя я бы не парился и взял бы bool
Ответ отправил: PROD (статус: 1-ый класс)
Отправлен: 08.12.2005, 18:52 Оценка за ответ: 1 Комментарий оценки: Не привёл ни одного примера (исходника). Просто массив не удобен, для действий над битами к примеру e = (a&b)|(c&!d);
Отвечает: Raptor1
Здравствуйте, Константин Константинович!
Ну вообще то эти 25 бит легко влезут в 32-битный long, а памяти это займет ровно 4 байта, но если такие последовательности могут иметь произвольную длину, то одним long не обойдешься. Для того чтобы выбрать наилучшее представление надо знать что какие операции потребуется выполнять с такими данными. Если простой индексированный доступ то можно и каждый бит писать в переменную (BYTE, а не BOOL), будет, быстро, но занимать места в 8 раз больше. Если же группы бит упаковывать в байты, или DWORD или что то еще,
не важно что, то скорость доступа к отдельному биту будет меньше, но зато места сэкономишь. Если такие последовательности потребуется между собой сравнивать, складывать по модулю 2, соединять в одну и они могут быть значительного размера то выгоднее второй вариант, если длина их невелика, и часто требуется индексированый доступ, то выгоднее первый вариант, особенно если учесть то что он требует существенно меньше затрет на программирование. Для реализации второго варианта
(упакованного) целесообразно написать класс типа вектора, в котором хранить упакованные биты, ну и сделать для него стандартный набор - конструктор, конструктор из объекта, операторы равенства, сложения, сравнения через оператор [] доступ к битам, а также Get/Set для бита и т.д.
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 08.12.2005, 23:09 Оценка за ответ: 4 Комментарий оценки: Было бы неплохо если бы ты примеры привёл, т.е. исходники... А так ответ хороший аргументированный, да ещё и сведения о скорости.
Вопрос № 31.036
Здравствуйте!помогите пожалуста ,мне надо считать данные из файла в Edit,только так, чтобы данные из первой строки файла записывались в Edit1,из второй в Edit2 и т.д.
Отправлен: 08.12.2005, 02:46
Вопрос задала: Myrrrka (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Zitz
Здравствуйте, Myrrrka!
Это смотря на чем пишете, барышня!
Эсли под МФЦ то пожалуйста смотрите приложение...
пояснение: m_Edit1 и m_Edit2 - стринги связанные с эдитами,
добавить их можно используя КлассВизард->МемберВариаблас->ЭддВариабл
Ну или в ручную ;-)
А если у вас там допустим МНОГО строк и соответствунно МНОГО эдитов
то лучше использовать многострочную какую нить вещь типа Листа...
Приложение:
Ответ отправил: Zitz (статус: 2-ой класс)
Отправлен: 08.12.2005, 17:44
Отвечает: Ataman N. N.
Здравствуйте, Myrrrka!
Используйте процедуру ReadLn(.....);
Данная процедура построчно читает файл.
Ответ отправил: Ataman N. N. (статус: 3-ий класс)
Отправлен: 08.12.2005, 21:58
Отвечает: Raptor1
TRY
{
CStdioFile file( "c:\myfile.txt", CFile::modeRead | CFile::typeText );
DWORD dwBaseEditID=ID_EDIT1; // ID первого edit, они должны идти подряд, если не подряд
// исправь в resource.h, только обязательно в редакторе VC,
// а то можешь вообще проект запороть
DWORD dwEditLimit=10; // сколько всего edit-ов
CString strTemp;
while(1)
{
if(file.ReadString(strTemp))
{
this->SetDlgItemText(dwBaseID,strTemp);
dwBaseEditID+=1;
if(dwBaseEditID>dwEditLimit)
break;
}
else
break;
}
}
CATCH( CFileException, e )
{
e.ReportError();
}
END_CATCH
UpdateData(TRUE);
Invalidate();
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 10.12.2005, 14:52
Вопрос № 31.043
Уважаемые эксперты ! Подскажите, пжлста, как вставить в программу на Си подпрограмму на Ассемблере. ОС Unix, компилятор Watcom CC++
Отправлен: 08.12.2005, 09:47
Вопрос задал: 0legg (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Jadd
Здравствуйте, 0legg!
Очень просто. Есть конструкция asm{}. Например,
asm{
mov ax, myvar;
mul str;
......
}
Примерно так.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 08.12.2005, 10:04
Отвечает: Iluha
Здравствуйте, 0legg!
Смотря что тебе нужно. Если ты хочешь просто использовать ассемблерные вставки, то пиши _asm { ..... }
Если ты хочешь создать отдельный модуль с процедурой написанной на ассемблере, то тебе нужно организовать связь языка С с языком assembler.
Для компилятора Borland C++ будет выглядеть примерно так:
//вызывающая процедура на С
#include <stdio.h>
extern "C" void asmproc (int);
int main () {
int t = 0;
asmproc (t);
return 0;
}
//вызываемый модуль на асме
masm
model small
stack 256
.data
....
.code
public _asmproc
_asmproc proc c near t:WORD
....
_asmproc endp
Как сделать в Watcom не знаю( не использовал ни разу )
Ответ отправил: Iluha (статус: 1-ый класс)
Отправлен: 08.12.2005, 16:48
Отвечает: Muad Dib
Здравствуйте, 0legg!
Вот тут есть пример для GCC и nasm в качестве ассемблера:
Ответ отправил: Muad Dib (статус: 1-ый класс)
Отправлен: 08.12.2005, 20:38
Вопрос № 31.061
Здравствуйте .
У меян вопрос.. Возможно ли такое :
Допустим в браузере Опера мы открыли документ Html , в этом докупенте нарисована кнопка ... Можно ли нажать кнопку программно.. если можно то как? ..
Среда Билдер 6
Спасибо.
Отправлен: 08.12.2005, 12:16
Вопрос задал: __Cheat3r (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Gibbel
Здравствуйте, __Cheat3r!
Если вы знаете координаты кнопки внутри окна оперы, то можно послать окну оперы сообщения, имитирующие клик мыши в указанной точке.
Других вариантов решения данной задачи я не вижу (кнопки веб-страниц не являются стандартными кнопками системы и прорисовываются движками браузеров самостоятельно, поэтому напрямую сообщения о нажатии кнопки послать невозможно).
--------- От жизни еще никто не умирал
Ответ отправил: Gibbel (статус: *Ветеран)
Отправлен: 08.12.2005, 12:37
Отвечает: Muad Dib
Здравствуйте, __Cheat3r!
Было бы легче ответить если бы вы объяснили хотя бы примерно зачем это вам нужно.
Если надо в итоге отправить на сервер информацию (например нажать кнопку в форме отправки SMS-ки), то могут быть полезны ссылки (там не совсем C++ Builder, но направление копания очевидно.):