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

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


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

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 334
от 24.12.2005, 20:12

Администратор:Калашников О.А.
В рассылке:Подписчиков: 237, Экспертов: 48
В номере:Вопросов: 8, Ответов: 15


Вопрос № 31772: Как проверять правильность загрузки файла? Нужно проверить файл правильно загрузился или нет, и если нет - то потребовать новый путь для него. (если можно с исходником - я пока плохо ориентируюсь в компонентах). есть: begin path...
Вопрос № 31773: Вопрос недавно задал: Как в консольном приложении использовать NMSMTP и NMPOP3? И получил такой ответ: Отвечает: sir henry (>>) Здравствуйте, 34076! Точно так-же как и в неконсольном: в строке Uses прописать соотв...
Вопрос № 31785: Вопрос такой: в Windows во многих местах встречаются "бегущие" прогресс-индикаторы. Стандартными средствами в Delphi сделать подобное нельзя. В частности, TProgressBar отображает уровень от 0 и до нужной позиции, а отображать уровень от одн...
Вопрос № 31786: Уважаемые эксперты! Не подскажите как сделать выделение парных скобок, типа ( ) и { }. Чтоб когда я подвожу курсор к ( соответвующая ей скобка ) выделялась. P.S.Компонент synedit не предлагать....
Вопрос № 31788: Доброго времени суток господа Эксперты!!! У меня к вам вопрос: Можно ли из экзешника извлечь его код. Т.е. есть *.exe файл который мне надо переделать, возможно ли средствами Delphi открыть данный *.exe файл и отредактировать его ко...
Вопрос № 31790: Здравствуйте! Как правильно преобразовать такую строку: =?windows-1251?Q?=45x=43ode.ru=20-=20?= =?windows-1251?Q?=EF=F0=EE=E3=F0=E0=EC=EC=E8=F0=EE=E2=E0=ED=E8=E5=20?= =?windows-1251?Q?=ED=E0=20=E2=FB=F1=EE=EA=EE=EC=20=F3=F...
Вопрос № 31794: Уважаемые эксперты подскажите пожалуста как с помощь делфи работать с офисом(есть база данных в аксесе из нее нужно готовить различные с правки в ворд, ехсел и очень хотелось бы в визио диограмки что б рисовались) любая помощь будет принята с огромно...
Вопрос № 31824: Здравствуйте,уважаемые эксперты.Подскажите,пожалуйста,как в DBLookupComboBox установить по умолчанию первое или любое из значений из списка при OnFormShow? Спасибо....

Вопрос № 31.772
Как проверять правильность загрузки файла?
Нужно проверить файл правильно загрузился или нет, и если нет - то потребовать новый путь для него. (если можно с исходником - я пока плохо ориентируюсь в компонентах).

есть:
begin
path:=edit1.text;
Label2.Caption:=path;
AssignFile (shab, path);
Reset (shab);
while not EOF (shab) do
begin
readln (shab,buf);
Memo1.Lines.Add(buf);
end;
CloseFile(shab);
end;
Отправлен: 18.12.2005, 20:49
Вопрос задал: Andrew (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Golden Spider
Здравствуйте, Andrew!

Я думаю, проблем во время загрузки быть не должно, а вот если файла просто нет то это другое дело.
Перед тением файла проверьте его существование:

if fileexists(path) then
begin
{Читаем}
assignfile...

end
else...
---------
Семь раз проверь, один раз откомпилируй!
Ответ отправил: Golden Spider (статус: 4-ый класс)
Отправлен: 18.12.2005, 21:49

Отвечает: Slava
Здравствуйте, Andrew!
Если файл есть то он должен загрузится.
Если файл отсутствует то можно при попытке загрузки выдать об этом сообщение.

begin
try
path:= Edit1.Text;
Label2.Caption:= path;
Memo1.Lines.LoadFromFile(path);
except on EFOpenError do ShowMessage('Нет файла, укажите другой путь'); End;
end;
Ответ отправил: Slava (статус: 2-ой класс)
Отправлен: 18.12.2005, 22:14

Отвечает: sir henry
Здравствуйте, Andrew!
Нужен критерий правильности загрузки. Какой он у Вас?
Единственный общедоступный способ проверки:
- Проверить, находится ли файл по указанному пути (функция FileExists())
- Попытка открытия файла в обрамлении Try .. Except
Любые другие критерии Вы должны сформулировать сами, иначе невозможно Вам ничего подстказать.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 19.12.2005, 08:08

Отвечает: Schmak
Здравствуйте, Andrew!
Если файл существует и никакая другая программа с ним ничего не делает, то файл точно загрузится. С другой стороны если файл не существует, то это можно проверить при помощи функции FileExists(filename:string):boolean.
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 19.12.2005, 13:47


Вопрос № 31.773
Вопрос недавно задал:

Как в консольном приложении использовать NMSMTP и NMPOP3?

И получил такой ответ:
Отвечает: sir henry (>>)
Здравствуйте, 34076!
Точно так-же как и в неконсольном: в строке Uses прописать соответствующий модуль, объявить переменные нужных типов, заполнить правильно их свойства и вперед. :)
В uses добавил nmsmtp в общем сделал так:

program Project1;
{$APPTYPE CONSOLE}
uses
nmpop3, nmsmtp;
var
pop: tnmpop3;
begin
SMTP.Host := 'mail.kz';
SMTP.UserID := 'user1@mail.kz';
SMTP.Connect;
SMTP.PostMessage.FromAddress:= 'user1@mail.kz';
SMTP.PostMessage.ToAddress.Text:= 'user2@mail.kz';
SMTP.PostMessage.Body.Text:= '123’;
SMTP.PostMessage.Subject:='321';
SMTP.PostMessage.Date:='27.01.54' ;
SMTP.PostMessage.localprogram:='12345';
SMTP.SendMail;
SMTP.Disconnect;
end.

Понимаю, что неправильно (не работает).
Я очень непрофессионал, поэтому поподробнее бы.
Отправлен: 18.12.2005, 21:02
Вопрос задал: 34076 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Tsechoev Bagaudin
Здравствуйте, 34076!
NMSMTP и NMPOP3 являются объектами, значит у них должен быть конструктор (не помешает почитать об ООП). В делфи стандартно конструктором является метод Create. Теперь исправляем ошибки.
uses
nmpop3, nmsmtp;
var
pop: tnmpop3;
smtp: tsmtp;
begin
// создаем объекты
smtp:= smtp.create(); // я незнаю что это за библиотека и потому незнаю как там определены конструкторы, но все примерно так
pop:= tnmpop3.create();
// здесь твой код
...
// теперь уничтожаем объекты, дабы высвободить память
smtp.destroy;
pop.destroy;
end;
удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 18.12.2005, 23:42

Отвечает: sir henry
Здравствуйте, 34076!
У меня установлена Дельфи 7, а компонента NMSMTP в ней нет, поэтому проверить его работу не могу. Однако сразу же бросается в глаза из Вашего листинга, что переменную SMTP Вы объявить почему-то забыли. Вопрос: как программа может работать с необъявленой переменной?
Ответ отправил: sir henry (статус: Академик)
Отправлен: 19.12.2005, 08:24


Вопрос № 31.785
Вопрос такой: в Windows во многих местах встречаются "бегущие" прогресс-индикаторы. Стандартными средствами в Delphi сделать подобное нельзя. В частности, TProgressBar отображает уровень от 0 и до нужной позиции, а отображать уровень от одной позиции до другой он не умеет. Бегущая полоса именно так и построена - синхронно увеличиваются начальная позиция и конечная, а затем переходит на начало. Вопрос: как такое реализовать в своих программах? Поддержка стилей Windows XP обязательна.
Заранее благодарю за ответы.
Отправлен: 18.12.2005, 22:49
Вопрос задал: Ерёмин Андрей (статус: Специалист)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Vitava
Здравствуйте, Ерёмин Андрей!
Я думаю, что надо писать свой компонент или искать уже написанный.
Удачи Вам.
Ответ отправил: Vitava (статус: 5-ый класс)
Отправлен: 20.12.2005, 22:53
Оценка за ответ: 2
Комментарий оценки:
Очень информативный ответ...


Вопрос № 31.786
Уважаемые эксперты!
Не подскажите как сделать выделение парных скобок, типа ( ) и { }. Чтоб когда я подвожу курсор к ( соответвующая ей скобка ) выделялась.
P.S.Компонент synedit не предлагать.
Отправлен: 18.12.2005, 23:30
Вопрос задал: Yxo (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: nimoid
Здравствуйте, Yxo!

Подскажем...

>P.S.Компонент synedit не предлагать.

А какой предлагать? Млин... мыслечитатели все в отпуске.... )

Можно использовать например RichEdit - там легко реализовать изменение цвета определенного текста. Алгоритм подскажу, а уж код сам пиши, что не выйдет - можешь опять сюда. Все банально и просто...

Ловишь событие при переходе курсора, проверяешь, стоит ли скобка за курсором, если да, то проверяешь, есть ли предыдущая (парная) скобка, если да, то выделяешь ее нужным цветом и вычисляешь предыдущую (парную) скобку и выделяешь ее тем же цветом.

p.s. Поиск текста, определение позиции курсора (каретки), выделение цветом и т.п. легко реализовать.
---------
Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и вперед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 19.12.2005, 02:38
Оценка за ответ: 4
Комментарий оценки:
Спасибо конешно, ответ правильный, собственно я так и хочу сделать. Только вопрос, а что если этих скобок не одна, т.е. внутри этих скобок есть еще несколько и допустим одни из них забыли закрыть или наоборот лишнюю поставили. На пример
copy(edit1.text,pos('h',edit1.text),lenght(text)-1))


Вопрос № 31.788
Доброго времени суток господа Эксперты!!!

У меня к вам вопрос:

Можно ли из экзешника извлечь его код. Т.е. есть *.exe файл который мне надо переделать, возможно ли средствами Delphi открыть данный *.exe файл и отредактировать его код.
Если это невозможно тогда как можно средствами Delphi добавить в этот файл какую-то кнопку или изменить его Caption у формы или у другого объекта или сделать более глобальное изменение. Если возможно то вместе с примерами.
Отправлен: 18.12.2005, 23:55
Вопрос задал: Ujin Antikvar (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: nimoid
Здравствуйте, Ujin Antikvar!

Видете ли, ув. Ujin Antikvar, извлечь код из скомпилированного файла НЕВОЗМОЖНО. Возможно извлечь только ресурсы или дизассемблировать файл.

Добавить кнопку, или какой-либо контрол или изменить их аттрибуты/значения возможно. И то, сначала надо убедиться, что файл не упакован каким-нить upx-ом и т.п..

Что для этого нужно:

Выдрал (и адаптировал :-) из хелпа ResHacker-а:

1. Смотри Borland Delphi’s demo - Resource Explorer.
2. Borland’s command line utility TDump.exe (идет вместе с Delphi & Cbuilder++).
3. MSDN - http://msdn.microsoft.com/default.asp
4. Хороший Hex редактор.
5. Форматы exe, dll, ocx, cpl и т.д. имеют специфический формат. Смотри на http://www.wotsit.org (замечательный ресурс по форматам файлов).

От себя добавлю: ищи статьи, документацию по данной тематике или проси исходники у авторов таких прог как Restorator, ResHacker и т.п. )).
---------
Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и вперед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 19.12.2005, 02:54
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: Boriss
Здравствуйте, Ujin Antikvar!
Есть еще специализированная программа DeDe для восстановления кода (но надеяться на чудо не надо - он может только то, что может)
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/DeDe.shtml
---------
Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 19.12.2005, 12:53
Оценка за ответ: 5


Вопрос № 31.790
Здравствуйте!

Как правильно преобразовать такую строку:

=?windows-1251?Q?=45x=43ode.ru=20-=20?=
=?windows-1251?Q?=EF=F0=EE=E3=F0=E0=EC=EC=E8=F0=EE=E2=E0=ED=E8=E5=20?=
=?windows-1251?Q?=ED=E0=20=E2=FB=F1=EE=EA=EE=EC=20=F3=F0=EE=E2=ED=E5=20?=
=?windows-1251?Q?-=20=E2=FB=EF=F3=F1=EA=20?=
=?windows-1251?Q?21?=

в нормальный вид.

Заранее спасибо!

Отправлен: 19.12.2005, 00:19
Вопрос задал: Данилевич Игорь Владимирович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Данилевич Игорь Владимирович!

Если вы об URL-кодировании, то вы можете воспользоваться компонентой NMURL на странице FastNet
Ответ отправил: Лучников Юрий Владимирович (статус: 6-ой класс)
Отправлен: 19.12.2005, 00:34
Оценка за ответ: 4
Комментарий оценки:
Это не совсем URL-кодирование, потому NMURL не помогает.
Так кодируется заголовок Subject в письмах электронной почты.

Отвечает: nimoid
Здравствуйте, Данилевич Игорь Владимирович!

Как правильно? См. доки по url-кодированию...

1. Ручками! Или...
2. воспользуйся готовыми компонентами.

По п. 1: берешь строку, и заменяешь соответствующие значения на "нормальные" символы в цикле или еще как-нить...

По п. 2: не знаю, поищи в сети.
---------
Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и вперед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 19.12.2005, 03:00


Вопрос № 31.794
Уважаемые эксперты подскажите пожалуста как с помощь делфи работать с офисом(есть база данных в аксесе из нее нужно готовить различные с правки в ворд, ехсел и очень хотелось бы в визио диограмки что б рисовались) любая помощь будет принята с огромной блогодарностью=)
Отправлен: 19.12.2005, 01:25
Вопрос задал: Asani (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Asani!
Это можно делать с помощью OLE. Правда работает медленно, зато в инете есть куча описаний.
Это можно делать с помощью DDE. Быстро работает, но описания почти ноль.
Цикл статей посвященных OLE есть на www.delphikingdom.com.
Коннектится и получать данные из БД Access можно традиционным для Дельфи способом - через BDE или через ADO.
Мое личное мнение. Наиболее быстрым делом, не требующим никаких допоплнительных компонентов, будет готовить эти справки в формате HTML. Ведь HTML - это чисто текстовый файл и сварганить его дело одной секунды на любых объемах БД.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 19.12.2005, 08:33

Отвечает: Golden Spider
Здравствуйте, Asani!

Мне известно два наиболее удобных способа:
1. Через OLEс Exel, в Delphi есть такая вкладка servers там всё есть, способ простой и описаний по его использованию в интернете масса. (Мне он более нравится, хотя иногда подтормаживает).

2. С Бд через ADO очень резвый способ, но довольно сложный. Описания в интернете есть.

Также есть специализированные компоненты, но их надо качать :).
---------
Семь раз проверь, один раз откомпилируй!
Ответ отправил: Golden Spider (статус: 4-ый класс)
Отправлен: 19.12.2005, 14:24


Вопрос № 31.824
Здравствуйте,уважаемые эксперты.Подскажите,пожалуйста,как в DBLookupComboBox установить по умолчанию первое или любое из значений из списка при OnFormShow?
Спасибо.
Отправлен: 19.12.2005, 16:05
Вопрос задал: Сусликов Евгений Павлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Сусликов Евгений Павлович!

DBLookupComboBox отображает содержимое DataSet с каким-то запросом.
Следовательно нужно установить текущую запись в Dataset с помощью функции Locate
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 19.12.2005, 16:15


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное