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

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


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

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

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

Выпуск № 323
от 13.12.2005, 18:00

Администратор:Калашников О.А.
В рассылке:Подписчиков: 257, Экспертов: 51
В номере:Вопросов: 10, Ответов: 19


Вопрос № 30994: Здравствуйте, уважаемые эксперты. Я пытаюсь создать сервис. У меня возникла проблема. Подскажите, пожалуйста почему код (приведен ниже) нехочет компилироватся, DELPHI пишет : [Error] Unit1.pas(42): Undeclared identifier: 'Screen' [Error] ...
Вопрос № 31001: Нужно, чтобы прога при запуске пыталась получить почту (использую nmpop3), если возникает ошибка (нет соединения с интернетом, допустим), то прога должна sleep(10000) и снова pop3.connect. Вопрос: как сделать, чтобы при ошибке соединения прога не выл...
Вопрос № 31002: Здравствуйте, уважаемые эксперты. Пишу проект. Заказчик попросил сделать на форме окошко, в котором бы отображались объекты. Форма отображает данные таблицы БД. Объекты могут быть Adobe Acrobat, Microsoft Visio, просто картинка. При этом мне ...
Вопрос № 31004: Здравствуйте, уважаемые эксперты в программировании на Delphi. Недавно тут решил написать простенький мыл-клиент. Пользуюсь компонентами Indy SMTP и POP3. С отправкой всё окей, тока почему-то вместо заголовков письма на кириллице приходят кракозя...
Вопрос № 31019: Здравствуйте уважаемые эксперты. У кого стоит Delphi 2005 не подскажите как добавлять свои компоненты в Tool Palette?...
Вопрос № 31038: Здравствуйте, господа эксперты. Вопрос такой: program Project1; {$APPTYPE CONSOLE} uses SysUtils; var s:String; begin s:='Здесь что-нибудь по-русски'; writeln(s); readln; end. <...
Вопрос № 31058: Может ли кто-нибуть привести пример(самый простой) или дать ссылку на работу с BLOB - полем. Подробности вопроса: есть фотогафии их нужно вставлять автоматически в фастрепорт....
Вопрос № 31067: Здравствуйте, я недавно задавал вопрос: Нужно, чтобы прога при запуске пыталась получить почту (использую nmpop3), если возникает ошибка (нет соединения с интернетом, допустим), то прога должна sleep(10000) и снова pop3.connect. Вопрос: как ...
Вопрос № 31074: Как запустить DVD файл расширений *.VOB и *.IFO Такой метот не открывает файлы DVD begin ShellExecute(Application.MainForm.Handle, PChar('open'), PChar('01.IFO'), Nil, PChar(''), SW_ShowNormal); end;...
Вопрос № 31076: Добрый день. Подскажите пожалуйста что я не так сделал. Есть ListView. Viewstyle="vsReport." В свойстве Columns у него задано 3 поля (Фамилия имя отчество). Когда я делаю так как указанно в приложении, добавляется новый элемент, но в поле Фам...

Вопрос № 30.994
Здравствуйте, уважаемые эксперты. Я пытаюсь создать сервис. У меня возникла проблема. Подскажите, пожалуйста
почему код (приведен ниже) нехочет компилироватся, DELPHI пишет :
[Error] Unit1.pas(42): Undeclared identifier: 'Screen'
[Error] Unit1.pas(43): Missing operator or semicolon
хотя если в uses добавить Forms то проэкт компилируется но скрин получается полностью белого цвета, подскожите пожалуста как это исправить.
З.Ы в обычном проэкте этот код работает.

Приложение:

Отправлен: 07.12.2005, 17:59
Вопрос задал: DeMON89 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, DeMON89!
1. А Вы в forms.pas не пробовали заглянуть? :)
Как раз там и объявлена переменная Screen. Вы можете перенести объявление переменной в свою программу, а вот объявление класса и его описание, наверное лучше перенести в отдельный модуль.
2. Вам не обязательно использовать переменную Screen, используйте функции WinAPI. Тем более, Вы все равно переходите на эти функции при копировании. Получить ширину и высоту экрана можно другими способами:
GetSystemMetrics(SM_CYSCREEN); {Высота}
GetSystemMetrics(SM_CXSCREEN); {Ширина}
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 18:41
Оценка за ответ: 4
Комментарий оценки:
пасиба

Отвечает: Маренич Владимир
Здравствуйте, DeMON89!
Переменная Screen объявлена в модуле Forms. Только не следует его "пихать" в USES секции INTERFACE. После IMPLEMENTATION укажите подключение модуля
USES Froms;
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 07.12.2005, 23:35
Оценка за ответ: 5
Комментарий оценки:
большое спосибо теперь работает


Вопрос № 31.001
Нужно, чтобы прога при запуске пыталась получить почту (использую nmpop3), если возникает ошибка (нет соединения с интернетом, допустим), то прога должна sleep(10000) и снова pop3.connect. Вопрос: как сделать, чтобы при ошибке соединения прога не вылетала, а переходила к процедуре sleep? Пробывал делать:

try
pop3.connect;
except
sleep(10000);
end;

Не помогает.
Отправлен: 07.12.2005, 18:58
Вопрос задал: 34076 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Denis Hakimov
Здравствуйте, 34076!
Попробуйте использовать структуру try...except...else...end, в Вашем случае после ключевого слова except нужно указать класс исключительной ситуации, которую Вы хотите обработать. Лучше использовать такой код:

try//попытка выполнить код
pop3.connect;
except//ищем исключения
else//единый обработчик для всех классов исключений
sleep(10000);
end;

Если приведете полный код приложения - можно будет оказать более существенную помощь.
Удачи!
Ответ отправил: Denis Hakimov (статус: 5-ый класс)
Отправлен: 07.12.2005, 19:10

Отвечает: Татьяна
Здравствуйте, 34076!
Немного непонятен вопрос, что именно не помогает, выдает ошибку?
Либо не коннектится заново? Так оно и не должно коннектиться, для этого вам необходим например рекурсивный вызов, однако, есть риск уйти в никуда, могу предложить так (см. приложение)

Приложение:

---------
Нет ничего невозможного!!!

Ответ отправила: Татьяна (статус: 9-ый класс)
Отправлен: 07.12.2005, 19:20

Отвечает: sir henry
Здравствуйте, 34076!
Попробуйте так:
var
Yes: Boolean;
Begin
Yes:=False;
Repeat
Try
pop3.connect;
Yes:=True;
Except
sleep(10000);
End;
Until Yes;
End;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 20:16


Вопрос № 31.002
Здравствуйте, уважаемые эксперты. Пишу проект. Заказчик попросил сделать на форме окошко, в котором бы отображались объекты.
Форма отображает данные таблицы БД. Объекты могут быть Adobe Acrobat, Microsoft Visio, просто картинка.
При этом мне все объекты нужно хранить в бд. Пока использую Access, затем перейду на ms sql. Так вот вопрос как мне сделать загрузку объектов в БД и потом отображение при просмотре таблицы?
Отправлен: 07.12.2005, 19:00
Вопрос задал: Batiskaf (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Batiskaf!
А какие объекты то?
Загружать можно с помощью LoadFromFile в BLOB поле, а отображение можно попробовать с помощью OleContaner, но будет зависеть от того, что за объекты, поэтому трудно сказать, что использовать.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 07.12.2005, 20:20
Оценка за ответ: 4
Комментарий оценки:
По поводу Adobe Acrobat я и сам не могу сказать, что за объекты, уточню у заказчика, а вот по поводу visio могу сказать,
что надо будет в БД хранить часть документа, например, чертеж здания или комнаты. Желательно, чтобы на форме отображался
ХОТЯ БЫ превью объекта, хранящегося в БД.


Вопрос № 31.004
Здравствуйте, уважаемые эксперты в программировании на Delphi.
Недавно тут решил написать простенький мыл-клиент. Пользуюсь компонентами Indy SMTP и POP3. С отправкой всё окей, тока почему-то вместо заголовков письма на кириллице приходят кракозябры. Пробовал и в KOI8-R переводить - всё равно фигня. А с получением почты вообще капут. Не пашет. Не понимаю, как делать. Мой код в приложении. И ещё. Почему-то при запуске проверки почты по-дикому трафик жрется (прямо мегабайтами). Помогите, плиз. Вы знаете, что я оценки ставлю строго, но справедливо. И ещё. Просьба не отвечать по нескольку раз одно и тоже. Не терплю корыстного набирания очков. А тем, кто хорошо ответит - 5 и личное спасибо.
С уважением, студент romodos

Приложение:

Отправлен: 07.12.2005, 19:32
Вопрос задал: Romodos (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Vbhjndjhtw
Здравствуйте, Romodos!
Есть исходник программы. Лови на мыле.
---------
Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 6-ой класс)
Отправлен: 08.12.2005, 07:41
Оценка за ответ: 3
Комментарий оценки:
Спасибо за старание, но я пишу на Delphi, a не на Visual Basic и просли дать овтет на конкретный вопрос по компоненту Indy POP3. Зачем присыла код программы, который мне никак не поможет


Вопрос № 31.019
Здравствуйте уважаемые эксперты. У кого стоит Delphi 2005 не подскажите как добавлять свои компоненты в Tool Palette?
Отправлен: 07.12.2005, 21:39
Вопрос задал: Beginner (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Маренич Владимир
Здравствуйте, Teapot!
У меня Delphi 7. Подозреваю, что как и везде: нужно в модуле вашего компонента использовать специальную процедуру Register.

Приложение:

Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 08.12.2005, 00:56


Вопрос № 31.038
Здравствуйте, господа эксперты.

Вопрос такой:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
var s:String;
begin
s:='Здесь что-нибудь по-русски';
writeln(s);
readln;
end.

Что и где указать, чтобы в консоли корректно отображался русский?

Спасибо.
Отправлен: 08.12.2005, 04:42
Вопрос задал: untitled (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, untitled!
В самом проекте - ничего. Просто наберите исходник в редакторе, который поддерживает кодировку CP866 (это как раз, которая в консоле), а потом откомпилируйте в командной строке:
dcc32 project1.dpr
Я пользуюсь для консольных проектов FAR'овским редактором и все тип-топ. :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 08.12.2005, 05:16
Оценка за ответ: 5

Отвечает: Vbhjndjhtw
Здравствуйте, untitled!
Во первых почему бы не написать на паскале?

Во вторых я открываю фармэнэджером файл с расширением *.dpr и вижу непонятную надпись, тогда я нажимаю F8(перехожу в досовскую кодировку) и всё становится понятным. Вот из этой досовской кодировки я копирую нашу надпись, перехожу в кодировку Win, нажатием F8, убираю непотные ероглифы и ставлю на их место то что скопировали из досовской кодировки. Сохраняю запускаю в Делфи и всё становится понятным.

В третих, если так противно писать в досе скачайте PascalABC
http://sunschool.math.rsu.ru/pabc/PABCDistr.zip - ознакомительная версия и
http://sunschool.math.rsu.ru/pabc/PABCDistrComplete.zip - для учеников компьютерной школы и зарегистрированных пользователей

P.S. как делать тоже самое стандартными средствами Делфи, я незнаю.


---------
Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 6-ой класс)
Отправлен: 08.12.2005, 07:21
Оценка за ответ: 5

Отвечает: akaDemik
Здравствуйте, untitled!
В user32 есть две функции CharToOemA и OemToCharA для преобразования строки в досовскую кодировку и обратно, можно использовать их. В приложении пример использования.

Приложение:

Ответ отправил: akaDemik (статус: 1-ый класс)
Отправлен: 08.12.2005, 08:38
Оценка за ответ: 5

Отвечает: Маренич Владимир
Здравствуйте, untitled!
Нужно перевести в ДОС-кодировку (866)
s:='Программа корректирует время документов, у которых оно одинаковое';
SetLength(s1, Length(s));
AnsiToOem(@s[1], @s1[1]);
Writeln(s1);
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 08.12.2005, 12:15
Оценка за ответ: 5


Вопрос № 31.058
Может ли кто-нибуть привести пример(самый простой) или дать ссылку на работу с BLOB - полем.
Подробности вопроса:
есть фотогафии их нужно вставлять автоматически в фастрепорт.
Отправлен: 08.12.2005, 12:02
Вопрос задал: Vbhjndjhtw (статус: 6-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Vbhjndjhtw!
Посмотрите вот здесь:
http://www.fastreport.ru/ru/documentation/
Ответ отправил: sir henry (статус: Академик)
Отправлен: 08.12.2005, 12:15


Вопрос № 31.067
Здравствуйте, я недавно задавал вопрос:

Нужно, чтобы прога при запуске пыталась получить почту (использую nmpop3), если возникает ошибка (нет соединения с интернетом, допустим), то прога должна sleep(10000) и снова pop3.connect. Вопрос: как сделать, чтобы при ошибке соединения прога не вылетала, а переходила к процедуре sleep? Пробывал делать:

try
pop3.connect;
except
sleep(10000);
end;

Не помогает.

К сожалению, не один из предложеных вами вариантов решения проблемы не помог. Попытаюсь подробнее:
Программы вообщем-то еще нет, есть одна процедура:

procedure TForm1.FormCreate(Sender: TObject);
begin
pop3.connect;
end;

Т.к. соединения с интернетом нет, то ясно происходит ошибка, появляется окно:

Project Project1.exe raised exception class ESockError with message 'Host Lookup Failed'. Process stopped. Use Step or Run to continue.

Дык вот, мне нужно, чтобы это окно не вылазило и программа не останавливалась. А делала следующее: если pop3.connect проходит неудачно, то программа отдыхает секунд 10 (sleep(10000)) и снова пытается pop3.connect, а если pop3.connect проходит удачно (установлено соединение с интернетом, сервер нормально принял), то там какие-нибудь другие действия (получение почты, например).
Вопрос: как избавиться от этого окна и остановки программы?
Отправлен: 08.12.2005, 13:48
Вопрос задал: 34076 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, 34076!
Избавится от этого окна можно только одним способом - установить предварительное соединение с инетом. Может быть опять не то? Вы как-то порциями информацию о том, что Вам нужно выдаете... :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 08.12.2005, 14:30

Отвечает: Denis Hakimov
Здравствуйте, 34076!
Программа будет останавливаться только при запуске из среды Delphi. Если Вы запустите созданный exe-шник - окно не появится, а будут выполнены действия, которые Вы указали после ключевых слов try...except. Первое, что пришло в голову в приложении
Удачи!

Приложение:

Ответ отправил: Denis Hakimov (статус: 5-ый класс)
Отправлен: 08.12.2005, 14:41
Оценка за ответ: 5

Отвечает: Ерёмин Андрей
Здравствуйте, 34076!
Думаю, вот так:

try
pop3.connect;
except
sleep(10000);
Abort;
end;


Либо Abort перенести на строку выше. А вообще, sleep(10000) лучше не делать в блоке try..except, т.к. это ну очень странный метод. Уж лучше при ошибке переменной-ключу присваивайте значение и, если после коннекта ключ равен ошибке, то делаем Sleep.
---------
Где найти кpяк под ковpик для однокнопочного мыша?
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 08.12.2005, 17:47


Вопрос № 31.074
Как запустить DVD файл расширений *.VOB и *.IFO

Такой метот не открывает файлы DVD

begin
ShellExecute(Application.MainForm.Handle, PChar('open'),
PChar('01.IFO'), Nil, PChar(''), SW_ShowNormal);
end;
Отправлен: 08.12.2005, 14:27
Вопрос задал: Serhik_z (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: REFERI
Здравствуйте, Serhik_z!
Эта функция действует для файлов у которых установленна ассоциация с к-л программой.
Работать будет так PChar('01.VOB'), Nil, PChar(''), SW_ShowNormal); - запустится фильм. У меня он запускается в WinDVD. Надо ассоциировать этот тип файлов с к-л программой, тогда все будет работать, а если файлу не сопоставлена ни одна программа, тогда нет.
Правой кнопкой кликаете на файл выбираете открыть с помощью - выбрать программу. Выбираете и ставите галочку "Использовать ее для всех файлов такого типа"
Если вы хотите чтобы ваша программа работала не только на вашем компьютере, т.е. не у всех ведь установлена такая связь, а запустить файл надо, тогда пропишите процедуру изменения параметров запуска для файлов такого типа в реестре.
Удачи в кодинге!

---------
Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 08.12.2005, 16:27


Вопрос № 31.076
Добрый день.
Подскажите пожалуйста что я не так сделал. Есть ListView. Viewstyle="vsReport." В свойстве Columns у него задано 3 поля (Фамилия имя отчество).
Когда я делаю так как указанно в приложении, добавляется новый элемент, но в поле Фамилия пустая строка. Тоесть в таблице просто Иван Иванович, а поле фамилия - пустое.
Собственно вопрос, а почему?
Спасибо.

Приложение:

Отправлен: 08.12.2005, 14:38
Вопрос задал: akaDemik (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Schmak
Здравствуйте, akaDemik!
Попробуйте вот так:

var
li : TListItem;
begin
li:=lvWorkers.Items.Add;
li.Caption := 'Иванов';
li.SubItems.Add('Иван');
li.SubItems.Add('Иванович');
end;
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 08.12.2005, 15:07
Оценка за ответ: 4
Комментарий оценки:
Спасибо. Так работает.
Проблема в тм что я хотел сделать наследника от TListItem и создать в нем консруктор копирования. Примерно так:
TDataItem = class(TListItem)
private
Info : TRecData;//Переменная класса хранящая всю информацию о работнике
public
constructor Create(AOwner: TListItems; Inf : TRecData); overload;
end;

constructor TDataItem.Create(AOwner: TListItems; Inf: TRecData);
begin
Create(AOwner);
Info := Inf;
end;
Видимо не выйдет :(

Отвечает: Ataman N. N.
Здравствуйте, akaDemik!
Нужно создать еще один SubItems:
li.SubItems.Add('Иванов');
Ответ отправил: Ataman N. N. (статус: 3-ий класс)
Отправлен: 08.12.2005, 21:10
Оценка за ответ: 2
Комментарий оценки:
Не люблю ставить плохие оценки. SubItems отображаются начиная со второй колонки. В первой по логике вещей Caption. Если сделать
li.SubItems.Add('Иванов');
li.SubItems.Add('Иван');
li.SubItems.Add('Иванович');
В фамилии так и будет пусто, имя будет Иванов, а то что он Иванович вообще никто не увидит.


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

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

В избранное