Привет всем. У меня возник следующий вопрос. procedure TForm1.FormDblClick(Sender: TObject); var i:byte; begin if OpenPicture1.Execute then if OpenPicture1.FileName<>'' then begin i:=Length(MyImage); SetLength(MyImage,i+1); i:=Length(MyImage); MyImage[i]:=TImage.Create(Form1); MyImage[i].Parent:=Form1; MyImage[I].Picture.LoadFromFile(OpenPicture1.FileName); MyImage[i].Left:=0; MyImage[i].Width:=Round(Form1.Width/2); MyImage[i].Top:=0; MyImage[i].Height:=Round(Form1.Height/2); MyImage[i].Stretch:=true; end; end; Эта процедура отрабатывает один раз :( На второй выдается месага, что Ivalid pointer operation :(
А отладчиком тебя пользоваться не учили? Второе присваивание
i := Length(MyImage);
является источником ошибки Ответ отправлен: 21.05.2003, 12:18 Отправитель: Артём Шегеда Отвечает Stein
Здравствуйте, BuTEK! А чего такое MyImage? Ответ отправлен: 21.05.2003, 15:12 Отправитель: Stein Отвечает baldr
Здравствуйте, BuTEK! Я не знаю, что имел в виду Артем, но AFAIK динамический массив начинается с нулевого элемента, так что даже при первом проходе должна вылезти ошибка! Сорри, если неправ. Верным, IMHO, будет поставить везде индекс как [i-1]. Ответ отправлен: 21.05.2003, 17:06 Отправитель: baldr Отвечает BOLT
Здравствуйте, BuTEK! Не, ну ты даешь! MyImage - что это такое: массив, перменная или еще что-нибудь???Если бы я знал, тогда бы и помог, а так извени! Приведи весь листинг модуля, тогда и поговорим.Ну дают люди... Счастливо! Ответ отправлен: 21.05.2003, 13:09 Отправитель: BOLT
Вопрос № 660
Здравствуйте уважаемые эксперты ! Ответьте пожалуйста, не делал ли кто из вас следующей проги: со своего компа по локалке посмотреть что на мониторе другого компа в этой же локалке. Там - Win98SE. У меня - WinME,Win2K. Может у кого есть исходники или ссылки. И вообще это реально ? Оболочка Delphi 3. Радик.
Добрый день, Радик! Это реально, видел такие проги. Только на удаленном компе клиент ставился... А вот как это сделать - не занаю, удачи в поисках. Ответ отправлен: 22.05.2003, 10:42 Отправитель: Vdr Отвечает BOLT
Доброе время суток, Радик! Исходника/ссылки нет. Вообще-то это реально.Алгоритм можно описать так: пишешь сервер для себя, клиент для жертвы.Клиент в заданном временном промежутке вызывает api-функцию "Print screen" и сохраняет в файл, потом посылает серверу.Можно зделать что-бы клиент посылал 20 "снимков" в секунду, но это будет тормозить клиент плюс трафик в секунду будет 1,37 Мбайт * 20 = 27,4 Мбайта(в bmp-формате) или 81 Кбайт * 20 = 162 Кбайта(в jpeg-формате). Вот все! Конечно на словах все в мире реально, а вот на деле... :з) Счастливо! Ответ отправлен: 22.05.2003, 14:21 Отправитель: BOLT Отвечает Артём Шегеда
Добрый день, Радик!
На моём сайте такая вещь лежит. Собственноручно писанная Ответ отправлен: 21.05.2003, 19:56 Отправитель: Артём Шегеда Отвечает Stein
Доброе время суток, Радик! Реально, даже делал, но забыл... Честно... Ответ отправлен: 21.05.2003, 23:01 Отправитель: Stein Отвечает Lynx
Приветствую Вас, Радик! Могу только сказать, что такое возможно. У нас в группе парень один на Делфях писал BackDoor. Так вот он позволял смотреть что у чела на мониторе.
Ответ отправлен: 22.05.2003, 17:47 Отправитель: Lynx
Вопрос № 661
Привет всем :) Повторяю вопрос.(плюс необходимые патчи :) У меня возник следующий вопрос. procedure TForm1.FormDblClick(Sender: TObject); var i:byte; begin if OpenPicture1.Execute then if OpenPicture1.FileName<>'' then begin i:=Length(MyImage); SetLength(MyImage,i+1); i:=Length(MyImage); MyImage[i]:=TImage.Create(Form1); MyImage[i].Parent:=Form1; MyImage[I].Picture.LoadFromFile(OpenPicture1.FileName); MyImage[i].Left:=0; MyImage[i].Width:=Round(Form1.Width/2); MyImage[i].Top:=0; MyImage[i].Height:=Round(Form1.Height/2); MyImage[i].Stretch:=true; end; end; Эта процедура отрабатывает один раз :( На второй выдается месага, что Ivalid pointer operation :( При этом MyImage это: MyImage: array of TImage; На моей машине ошибка выдается(при проходе под отладчиком) когда второй раз
выполняется команда if OpenPicture1.Execute then :(
Здравствуйте, BuTEK! Мама мия!Ну, блин, ты даешь! MyImage: array of TImage; - это че?Это же массив из 1 элемента!Как же ты хочешь получить доступ к следующему элементу, если его нет!Поэтому возникает ошибка - нет доступа к блоку памяти(т.е. указатель указывает на ничего!) Противоядие: 1)Статическое выделение памяти.Пишешь: MyImage: array[1..10] of TImage; - здесь выделяешь память для десяти объектов.Потом можешь обращатся к какому хочешь!; 2)Динамическое выделение памяти.Пишешь: MyImage: array[1..10] of ^TImage; - здесь ты описываешь указатели на будущие объекты "TImage".В процессе выполнение выделяешь память в цикле: new(MyImage[i]); и работаешь с ним как с обычном массивом. Преемущество конечно на стороне динамическом выделении памяти, т.к. пямять выделяется по мере надобности, в отличие статического - там память вся сразу выделяется.Улавливаешь
преемущество? Счастливо!
Ответ отправлен: 22.05.2003, 14:43 Отправитель: BOLT Отвечает baldr
Здравствуйте, BuTEK! Не слушай BOLTа - он сам не понимает что несет, а сделай так как тебе советовали в прошлый раз.Если не поможет - тогда расскажешь. Ответ отправлен: 22.05.2003, 17:23 Отправитель: baldr
Вопрос № 662
Приветсвую Артем. По поводу RemoteScreen. Я так понял, клиентская часть запускается как процесс, или нет ? Ее не видно по Ctrl-Atl-Del в 9x-ых виндах. И такой, может быть не скромный вопрос: а нельзя ли зыркнуть исходники. Спасибо. Радик.
Запускается как простая задача, а потом используя старые процедуры (оставшиеся от win95) прячется от глаз пользователя. Под NT (2000, XP) такой номер не катит. Там она просто запускается. Ответ отправлен: 22.05.2003, 11:51 Отправитель: Артём Шегеда
Вопрос № 663
Здравствуйте, Эксперты! В Дельфи представленна стандартная прямоугольная форма окна, я знаю что можно форму самому вырисовывать, видел пример, но потерял его. Если есть скинте мне в почтовый ящик
Здравствуйте, Владимир! CreateRGN, SetWindowRGN, если не ошибаюсь... В справке - всё толково описано. Ответ отправлен: 22.05.2003, 13:20 Отправитель: Stein Отвечает Vdr
Приветствую Вас, Владимир! примера нет, но суть в том, что окно делается прозрачным. На него помещаются рисунки для которых опеделяется реакция на действия пользователей. Ответ отправлен: 22.05.2003, 15:14 Отправитель: Vdr
Вопрос № 664
У меня такая проблема: в компиляторе Делфи я запускаю проект и он нормально запускается, делает всё то, что нужно. Но когда я компилирую exe-щник, а потом запускаю вылетает несколько окон с ощибкамми, рода: память не может быть read, в чём проблема?
Доброе время суток, noname! Где-то тут уже задавался вопрос, поищи в поиске... Ответ отправлен: 22.05.2003, 14:01 Отправитель: Stein Отвечает BOLT
Здравствуйте, noname! Исходя из данных может быть: 1)Версия Delphi устарела и конфликтует с новой ОС(менеджер памяти фирмы Borland начинает "заморачиваться"); 2)Настройки компелятора были збиты каким-нибудь компонентом.Попробуй установить все настройкм "по-умолчанию"; 3)Смотря что твоя программа выполняет.Если используешь указатели, то неправельно им работаеш - это вызывает подобные ошибки.Также при работе с динамическими массивами, при неправельной адрессации, тоже моежт возникнуть подобная ошибка. Счастливо! Ответ отправлен: 23.05.2003, 12:42 Отправитель: BOLT Отвечает Дима Мусиенко
Здравствуйте, noname! Без кода мало что можно сказать. А может быть и в настройках релиза что-то не то.
Ответ отправлен: 23.05.2003, 11:49 Отправитель: Дима Мусиенко Отвечает Vdr
Доброе время суток, noname! А что ты делаешь? Так то ничего не видно... Ответ отправлен: 22.05.2003, 15:15 Отправитель: Vdr
Вопрос № 665
Привет Артем ! По поводу RemoteScreen. А как выгружать клиентскую часть. client.exe /? не дает ответ на этот вопрос. Best regards. Радик.
Хороший вопрос! Я об этом и не задумывался! Я использую для этих целей плагин к FAR'у - ProcessList А исходники высылаю. Ответ отправлен: 22.05.2003, 14:23 Отправитель: Артём Шегеда
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.