Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 222
от 28.09.2003, 12:20

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 973
Отправлено ответов: 1862
Активность: 191.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Marouder
Статус: Профессиональный
Общий рейтинг: 122.03
URL: Первый Хабаровский Форум
Телефон: (4212) 21-93-65
[Подробней >>]
sir henry
Статус: Доверительный
Общий рейтинг: 152.27
[Подробней >>]
Cybernetic Creature
Статус: Профессиональный
Общий рейтинг: 124.04
URL: COOL
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.82
URL: Пристанище неодинокого программиста
[Подробней >>]
THE_PRO
Статус: Доверительный
Общий рейтинг: 137.5
[Подробней >>]
CJ
Статус: Начальный
Общий рейтинг: 124.32
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.72
URL: Программирование
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 122.51
[Подробней >>]
Дима Мусиенко
Статус: Опытный
Общий рейтинг: 108.33
[Подробней >>]
 
ART_43
Статус: Опытный
Общий рейтинг: 122.18
URL: ART_43 Home Site
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 957. Здравствуйте, уважаемые эксперты! Подскажите пожалуйста, где у меня может быть ошибка. Я использую с... (ответов: 1)
Вопрос № 958. Как из DLL-ки показывать немодальную форму. Библиотека написана под готовое приложение и в ней не пр... (ответов: 2)
Вопрос № 959. Привет всем трудящимся Экспертам! Немного вопросов набралось: Delphi: 1) Есть у меня, наприме... (ответов: 3)
Вопрос № 960. Хеллоу КОЛЛЕГИ (Уж больно нравится это слово) Есть проблема: Дан битмап файл, (огромный около 2,5х1,... (ответов: 2)
Вопрос № 961. Как мне различить графическая или текстовая инфор. в БО! В чем мне открыть гр.информ.? ... (ответов: 1)
Вопрос № 962. Здравствуйте ув. Эксперты! Как проиграть аудио файл без компонента MediaPlayer. НАпример на OnButton... (ответов: 4)
Вопрос № 963. Привет эксперты. Пытаюсь работать с Dll-динамически. var h:^cardinal; hn:=Загружаю h:=GetProcAddress... (ответов: 5)
Вопрос № 965. Уважаемые знающие люди, помогите со следующим вопросом: Как можно узнать об изменениях на диске - со... (ответов: 2)

Вопросов: 8, ответов: 20


 Вопрос № 957

Здравствуйте, уважаемые эксперты!
Подскажите пожалуйста, где у меня может быть ошибка.
Я использую следующую функцию для архивации каждого файла, обрабатываемого программой
void __fastcall Arh(String File)
{
Memo1->Lines->Clear();
Memo1->Lines->Add("@arj m " + FileName(ExtractFileName(File)) + " " + ExtractFileName(File) + " -y -hf2");
Memo1->Lines->Add("@del runn.bat");
Memo1->Lines->Add("@exit");
Memo1->Lines->SaveToFile("runn.bat");
if(WinExec("runn.bat /wait",0) > 31);
MAttach = FileListBox1->Directory + "\" + FileName(ExtractFileName(MAttach)) + ".arj";
}
Используемая при этом функция FileName
AnsiString FileName(AnsiString File)
{
AnsiString Name = ChangeFileExt(ExtractFileName(File), "");
return Name;
}
Но при использовании этой функции архивируются не все файлы, а только некоторые, и то, через раз.
Как можно улучшить работу этой функции (Arh)?


Приложение:


Вопрос отправлен: 23.09.2003, 15:32
Отправитель: Alexandr

[Следующий вопрос >>] [Список вопросов]

Отвечает Marouder

Приветствую Вас, Alexandr!
Какой-то ужасный код.
1) Зачем батник создавать, если можно сразу из WinExec вызвать Arj?
2) Что это за ужасный способ создания текстового файла через TMemo? Нельзя разве fstream использовать или API?
3) Ключ m - это архивирование файлов с удалением исходных файлов. Может, у них атрибут ReadOnly и из-за этого они не удаляются?

Ответ отправлен: 25.09.2003, 07:24
Отправитель: Marouder


 Вопрос № 958

Как из DLL-ки показывать немодальную форму. Библиотека написана под готовое приложение и в ней не предусмотрена передача Application.Handle. Нужно чтобы форма работала параллельно Dll-ке, что-то показывала и реагировала на кнопки. Пробовал создать форму через
Form:=TForm1.Create(nil);
Form.Show;
Форма создаеться :), но ни на что не реагирует :(. Как должны обрабатываться сообщения для формы? Или без Applicatin это не получится?



Вопрос отправлен: 23.09.2003, 18:07
Отправитель: Sucker

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Здравствуйте, Sucker!
А почему она должна на что-то реагировать? Ты же не написал ни одного обработчика событий :).
Сделай вот что:
1. Создаешь форму как обычно.
2. Кидаешь на нее кнопки, едиты и все что тебе нужно.
3. В событиях (типа Button1.OnClick) описывешь все, что тебе нужно сделать с компонентом.
4. Сохраняешь с каким-нибудь именем, например MyForm.pas.
5. Делаешь DLL'ку (см. приложение).
6. Должно работать ;).

Приложение:

Ответ отправлен: 24.09.2003, 05:14
Отправитель: sir henry


Отвечает Marouder

Добрый день, Sucker!
Я уже не помню точно. Давно как-то занимался этим вопросом. Но без Application, наверное, не получится.

Ответ отправлен: 25.09.2003, 07:24
Отправитель: Marouder


 Вопрос № 959

Привет всем трудящимся Экспертам!
Немного вопросов набралось:
Delphi:
1) Есть у меня, например, элемент TImage на форме, размером 400x300.
Как мне БЫСТРО записать все точки RGB этой картинки в массив array[1..400,1..300] of TColor?
2) Как мне затем БЫСТРО записать этот массив обратно?
3) Какой есть бесплатный компонент для создания региональных окон?
4) Какой есть бесплатный компонент для создания региональных кнопок с событиями смены изображения при MouseMove и MouseDown?
5) Как средствами Delphi я могу получить список всех файлов, их точное местоположение и размер с определённого сайта?
6) Как мне установить указатель (Pointer) на определённую область памяти, если я знаю её адрес?
Подписчикам:
7) Есть такая книга М.Краснова "OpenGL. Графика в проектах Delphi."+FD. Может кто поможет достать примеры с дискеты, прилагающейся к этой великолепной книге?
8) В каком интернет-магазине лучше всего покупать книги наложенным платежом? Интересуют только проверенные вами сервера.
P.S.: Слушайте, а зачем нужны всякие алгоритмы поиска пути, когда Волновой - самый быстрый и надёжный? Только для теории?



Вопрос отправлен: 23.09.2003, 19:04
Отправитель: URiS (urisff@inbox.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Приветствую Вас, URiS!
1)
var a:array[0..399,0..299] of TColor;
var i,j:integer;
.............
for i:=0 to Image1.Picture.Width-1 do
for j:=0 to Image1.Picture.Height-1 do
a[i,j]:=GetPixel(Image1.Canvas.Handle,i,j)
2)
.........................
for i:=0 to 399 do
for j:=0 to 299 do
pixels[i,j]:=a[i,j];
3),4)
What's it: REGIONALNIE KNOPKI (OKNA)

Ответ отправлен: 23.09.2003, 21:11
Отправитель: Cybernetic Creature


Отвечает Артём Шегеда

Добрый день, URiS!

1, 2. Очень настоятельно советую прочитать Win32 API, раздел "Storing an Image". В этом разделе дан пример (правда, на Си) сохранения изображения в файл. Перед тем, как будет что-то записано, очевидно, это что-то нужно получить. Вот в этом примере и получают массив битов изображения (как правило, 24 бита/точку - но нужно предусматривать всё). Ещё одно замечание: в результирующий буфер заносятся строки целиком (нет возможности указать начальный и конечный пиксел строки)
3. Не послать просто не могу:
http://www.torry.net/nonrect.htm
4. Аналогично п.3:
http://www.torry.net/anibuttons.htm
5. Хм... всех файлов с сайта... Если идёт речь про ftp - то нужно писать ftp-клиент, если речь про http, nj нужно писать парсер HTML-кода и выуживать все гиперссылки, а для относительных путей - восстанавливать полные пути. Это непростая задача даже для опытных. Само получение какого-либо ресурса - уже проблема, а парсить...
6. Преобразование pointer/integer - допустимо. Также допустимо преобразование <указатель на тип>/pointer. В результате получаем:
var
p : PChar;
Address : integer;
begin
ReadLn(Address);
p := PChar(pointer(Address));
WriteLn(p);
end;


Ответ отправлен: 24.09.2003, 12:38
Отправитель: Артём Шегеда


Отвечает Marouder

Здравствуйте, URiS!
5)
Используй Функции из WinInet. На rusfaq.ru лежит дока.
Здесь долговато объяснять.
6)
Очень просто. Pointer - это, по сути, почти то же самое, что и Cardinal. Оба - 32 битные беззнаковые целые. В памяти они выглядят абсолютно одинаково. Только тип надо привести.
Вот пример.
Установить указатель по адресу 401000h:
var p:pointer;
begin
p:=Pointer($401000);
end.

Ответ отправлен: 25.09.2003, 07:24
Отправитель: Marouder


 Вопрос № 960

Хеллоу КОЛЛЕГИ (Уж больно нравится это слово)
Есть проблема:
Дан битмап файл, (огромный около 2,5х1,5 кв. метров, но проверку лучше проводит на маленких файлах где то 200х100 пиксель)
Черно белый.
А там график (кривая). нужно найти координаты (в пикселях) все минимумы и максимумы (локальные). Глобальные я нашел.
для тех кто не понял глобальные и локальные обясняю(Глобальный минимум или максимум это самая нижняя или верхняя точка графика а локальные минимумы или максимумы это все вершинные точки графика)
тот код который я написал высылаю.см приложние
плиз доделайте если сможете
очень нужно до четверга
не надо ссылки типа Делфиворлд.народ.ру
или что то подобное
Извините за мой акцент я воопше то не местный.


Приложение:


Вопрос отправлен: 23.09.2003, 21:12
Отправитель: Cybernetic Creature

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Добрый день, Cybernetic Creature!
Точно так-же просканируй поколоночно или построчно весь рисунок :).

Ответ отправлен: 24.09.2003, 06:07
Отправитель: sir henry


Отвечает THE_PRO

Доброе время суток, Cybernetic Creature!
poskolku ne pomestilos suda...
bratan ya uje poslal otvet tebe na email ot ocp@mail.az

Ответ отправлен: 25.09.2003, 10:01
Отправитель: THE_PRO


 Вопрос № 961

Как мне различить графическая или текстовая инфор. в БО!
В чем мне открыть гр.информ.?



Вопрос отправлен: 24.09.2003, 21:08
Отправитель: Кирилл

[Следующий вопрос >>] [Список вопросов]

Отвечает Артём Шегеда

Доброе время суток, Кирилл!

В документации на Win32 API есть пример программы. Поищи раздел "Example of a Clipboard Viewer". Это полностью работающий код - только на Си.

Ответ отправлен: 25.09.2003, 12:31
Отправитель: Артём Шегеда


 Вопрос № 962

Здравствуйте ув. Эксперты!
Как проиграть аудио файл без компонента MediaPlayer.
НАпример на OnButtonCLic начал проигрыватся файл fail.wav(mp3)
Заранее спасибо!


Приложение:


Вопрос отправлен: 25.09.2003, 00:13
Отправитель: elvis

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Здравствуйте, elvis!
Procedure PlaySound

Ответ отправлен: 25.09.2003, 21:24
Отправитель: Cybernetic Creature


Отвечает sir henry

Добрый день, elvis!
С помощью функции PlaySound(). Если есть декодер мр3, то мр3 тоже будет проигрываться. Если декодера нет, то можно запустить с помощью:
ShellExecute(хэндл_окна, 'open',имя_файла,nil,nil,sw_show)
тогда, на какую программу у тебя зарегистрированы мр3, та и запуститься.

Ответ отправлен: 25.09.2003, 08:55
Отправитель: sir henry


Отвечает CJ

Доброе время суток, elvis!
Ну правильно!
Надо обязательно этот комнонент!
Ну или ты ас, то пиши свой модуль!


Ответ отправлен: 25.09.2003, 14:49
Отправитель: CJ


Отвечает Bob Johnson

Доброе время суток, elvis!
Есть функция PlaySound. wav файл она сыграть сможет (причем как с диска, так и из ресурсов приложения).

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 26.09.2003, 00:40
Отправитель: Bob Johnson


 Вопрос № 963

Привет эксперты.
Пытаюсь работать с Dll-динамически.
var
h:^cardinal;
hn:=Загружаю
h:=GetProcAddress(hn,'RunTest');
asm
jmp h // выполняю процедуру
end;
а вот как функции выполнить с получением
результата(cardinal/byte/string) незнаю.Спасибо



Вопрос отправлен: 25.09.2003, 01:06
Отправитель: AllDer

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Добрый день, AllDer!
А зачем ты так выполняешь функцию??

var code:cardinal;
code := h;<---выполняется h и результат в code

*** E-Man 1.5 (edition 04) - life is just a game...if you a student:) ***


Ответ отправлен: 25.09.2003, 03:10
Отправитель: _vt


Отвечает Дима Мусиенко

Добрый день, AllDer!
jmp - это инструкция безусловного перехода. И то она прыгает только, по-моему, в пределах 64Kb. Вместо неё надо использовать call. Рекомендую почитать соответствующую литературу. А возвращаемое значение возвращается в регистре eax, причем в нем может возвратиться и значение и адрес, если это массив или иной тип данных, например класс.
Но в данном случае луше не прибегать к ассемблеру а поступить как ответили другие эксперты.

Ответ отправлен: 25.09.2003, 19:46
Отправитель: Дима Мусиенко


Отвечает sir henry

Здравствуйте, AllDer!
Твоя функция в DLL'ке должна возвращать результат. И еще добавляй к ней (на всякий случай :) stdcall.

Ответ отправлен: 25.09.2003, 09:02
Отправитель: sir henry


Отвечает ART_43

Добрый день, AllDer!
h:=GetProcAddress(hn,'RunTest');
var1:=h(var2);

Ответ отправлен: 25.09.2003, 10:00
Отправитель: ART_43


Отвечает Marouder

Здравствуйте, AllDer!
1. Результат в регистре eax.
Вот пример. Допустим, резултат нужно записать в FuncResult (любого типа):
asm
call h // выполняю процедуру
mov funcresult,eax //записываем результат в FuncResult.
end;
Обрати внимание, что не "jmp h", а "call h". А вообще-то правильнее: "call dword ptr [h]".
2. Я все никак понять не могу, почему ты используешь указатель на Cardinal? В твоем случае можно просто использовать нетипизированный указатель.
var
h:Pointer;
Разницы в результате нет, но по правилам хорошего тона, надо делать именно так.
3. Тип String в DLL тоже использовать не надо. Во избежание глюков. Надо PCHAR использовать.
4. Не обязательно asm использовать. Можно просто:
var
h:function:cardinal;
hh:THandle;
FuncResult:Cardinal;
begin
hn:=Загружаю
h:=GetProcAddress(hn,'RunTest');
if (@h<>nil) then FuncResult:=h; //если адрес получен нормально, вызываем функцию h, результат отправляем в FuncResult.
end;


Ответ отправлен: 26.09.2003, 08:22
Отправитель: Marouder


 Вопрос № 965

Уважаемые знающие люди, помогите со следующим вопросом:
Как можно узнать об изменениях на диске - создание/удаление/переименование/перемещение файла/файлов/папки/папок, и как получить сведения о создании/удалении/переименовании/перемещении файла/файлов/папки/папок - имя и путь, дата изменения/создания, старый и новый путь (если перемещали), когда удалили и прочее?
А также об открытии, сохранении файла?



Вопрос отправлен: 25.09.2003, 08:05
Отправитель: FreeElectron (umnik@mail.kz)

[Следующий вопрос >>] [Список вопросов]

Отвечает THE_PRO

Приветствую Вас, FreeElectron!
Yesli ti xochesh viet vse "processes" kotoriye proisxoyat vo vremya raboti tvoyey progi, toqda ti mojesh ispolzovat WM_"..." (Windows Messages).
Yesli eto ne tot otvet kotoriy tebe nujen, toqda utochni vopros!

Ответ отправлен: 25.09.2003, 10:17
Отправитель: THE_PRO


Отвечает Marouder

Здравствуйте, FreeElectron!
Можно перехватить функции CreateFile, DeleteFile, CreateFolder, DeleteFolder и т.п. Про перехват писалось в книге Рихтера "Windows для профессионалов", на Wasm.ru и ,кажется, на rsdn.ru (но на rsdn.ru - отстойная статья, чайник какой-то писал, лучше всего у Рихтера).

Ответ отправлен: 26.09.2003, 08:22
Отправитель: Marouder



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (32)
C / C++ (31)
Perl (8)
Builder / Delphi (25)
Pascal (25)
Basic / VBA (11)
Java / JavaScript (14)
PHP (15)
Криптография (11)
WinAPI (15)
Пользователю
Windows 95/98/Me (53)
Windows NT/2000/XP (62)
"Железо" (44)
Поиск информации (27)
Администратору
Windows NT/2000/XP (33)
Linux / Unix (17)
Юристу
Гражданское право (12)
Семейное право (10)
Трудовое право (10)
КоАП (7)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное