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

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


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

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

Выпуск № 796
от 01.05.2007, 00:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 462, Экспертов: 91
В номере:Вопросов: 7, Ответов: 12


Вопрос № 84082: Здравстуйте! Подскажите пожалуйста, как можно узнать количество элементов перечеслимого типа? Заранее спасибо....
Вопрос № 84151: Подскажите на примере, как отправить файл на ftp. Заранее спасибо...
Вопрос № 84158: Помогите отправить файл по ftp (host - pocket.h16.ru) в директорию 'WWW'. Заранее спасибо...
Вопрос № 84201: Здравствуйте Уважаемые эксперты!Вопрос у меня по StringGrid.Что бы сделать редактируемый StringGrid, надо в опциях (Options) поставить goEditing в True.А можно ли делать редактируемым допустим только столбец или строку или только выбранную ячейку?...
Вопрос № 84208: Доброго времени суток! У меня возник вопрос по сетевому програмированию. Каким образом передавать кпримеру данные своего типа ?! Например какой-нить record или например масив. спс. ...
Вопрос № 84209: Здравствуйте, уважаемые эксперты! Как ПРОГРАМНО узнать битрейт у любого MP3 файла?...
Вопрос № 84220: Здраствуйте эксперты. У меня такой вопрос, в процедуре OnClose формы я вывожу сообщение: "Вы действительно хотите выйти?" и варианты ответа Да/Нет (код в приложении). Подскажите пожалуста как сделать так что бы при ответе "нет"...

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

Подскажите пожалуйста, как можно узнать количество элементов перечеслимого типа?

Заранее спасибо.
Отправлен: 25.04.2007, 08:12
Вопрос задал: _porodox_ (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gh0stik
Здравствуйте, _porodox_!

Вот предлагаю Вам такой вариант решения проблемы.

Необходимо описать пользовательские типы например так:

type UserSet=(elem1,elem2,elem3,elem4,elem5);
UserSets=set of UserSet;


Далее описываем переменную соответствующего типа
var x:UserSets;

А вот сама функция которая подсчитывает количество элементов множества:
function GetSetCount(uset: UserSets): Integer;
var i: UserSet;
begin
result:=0;
for i:= Low(i) to High(i) do
if i in uset then inc(result);
end;


И конечно же применение функции в программе:
procedure TForm1.Button2Click(Sender: TObject);
begin
x:=[elem1,elem4,elem2,elem5];
showmessage(inttostr(GetSetCount(x)));
end;


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 25.04.2007, 10:32
Оценка за ответ: 5

Отвечает: Georg
Здравствуйте, _porodox_!
Если X переменная перечислимого типа, то Ord(Low(X))- порядковый номер первого эламента =0, а Ord(High(X))- порядковый номер последнего элемента, а их число естественно на один больше.
Удачи!
Ответ отправил: Georg (статус: 3-ий класс)
Ответ отправлен: 25.04.2007, 14:08
Оценка за ответ: 5


Вопрос № 84.151
Подскажите на примере, как отправить файл на ftp. Заранее спасибо
Отправлен: 25.04.2007, 15:25
Вопрос задал: Bee.line (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bingo
Здравствуйте, Bee.line!
Значит, для создания собственного FTP клиета Вам понадобиться TIdTrivialFTP на панели Indy Clients. Принцип работы программы несложный. Запускать(т.е. делать активным) его нужно при создании окна:
-----
procedure TForm1.FormCreate(Sender: TObject);
begin
idtrivialftp1.Active:=true;
end;
----
Для загрузки файла НА сервер нужно разместить на форме кнопку и TOpenDialog. В TEdit будет храниться новое название файла FTP сервере или путь. При нажатии происходит следующее:
----
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if opendialog1.Execute then
idtrivialftp1.Put(opendialog1.filename ,edit1.text)
end;
----
Для того, чтобы скачать файл с сервера, в TEdit необходимо указать имя файла на сервере, в TSaveDialog - место, куда нужно сохранить файл на локальном компьютере.
----
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if savedialog1.Execute then
idtrivialftp1.Get(edit1.Text,savedialog1.FileName);
end;
----
Удачи!
---------
C темным пивом в светлое будущее!
Ответ отправил: Bingo (статус: 4-ый класс)
Ответ отправлен: 25.04.2007, 21:00


Вопрос № 84.158
Помогите отправить файл по ftp (host - pocket.h16.ru) в директорию 'WWW'. Заранее спасибо
Отправлен: 25.04.2007, 16:04
Вопрос задал: Bee.line (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Bingo
Здравствуйте, Bee.line!
Как реализовывать подобного рода программы, я уже объяснил в Вашем предыдущем вопросе № 84151. Теперь осталось уточнить некоторые моменты. Нужно указать в свойстве Host имя ftp сервера:
----
procedure TForm1.FormCreate(Sender: TObject);
begin
idtrivialftp1.Host:='pocket.h16.ru';
idtrivialftp1.Active:=true;
end;

Необходимо подкорректировать событие, когда отправляете файл на сервер:
-----
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if opendialog1.Execute then
idtrivialftp1.Put(opendialog1.filename ,'www'+edit1.text);
end;
-----
Ну вот, теперь все файлы будут кидаться в папку www, a edit1.text - это новое имя файла на удаленном компьютере. По идее, проблем возникнуть не должно, разве что только с сервером.
Удачи!
---------
C темным пивом в светлое будущее!
Ответ отправил: Bingo (статус: 4-ый класс)
Ответ отправлен: 25.04.2007, 21:36
Оценка за ответ: 3
Комментарий оценки:
Уважаемый Bingo, а ка насчет аутентификации на сервере, я так понимаю, что TIdTrivialFTP не предусматривает этого???


Вопрос № 84.201
Здравствуйте Уважаемые эксперты!Вопрос у меня по StringGrid.Что бы сделать редактируемый StringGrid, надо в опциях (Options) поставить goEditing в True.А можно ли делать редактируемым допустим только столбец или строку или только выбранную ячейку?
Отправлен: 25.04.2007, 20:01
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, GAZOT!
Можно конечно. Только не стандартными средствами, а ручками :-) Обрабатываем событие OnSelectCell() и делаем всё, что нам нужно. См. пример в приложении. Редактируемы только строки с чётными номерами. Удачи!

Приложение:

---------
Нет правила без исключений. Правило без исключений - исключение из правил.

Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Помощь, советы, обмен опытом.
ICQ: 286837644
----
Ответ отправлен: 25.04.2007, 20:15
Оценка за ответ: 4

Отвечает: Крылов Александр Владимирович
Здравствуйте, GAZOT!
Нет, такого свойства нет. Вашу задачу можно реализовать в обработчике событий OnSelectCell, в который в качестве параметров передаются номера строки и стобца выделяемой ячейки и уже оттуда менять значение свойства goEditing
Ответ отправил: Крылов Александр Владимирович (статус: 3-ий класс)
Ответ отправлен: 25.04.2007, 20:40
Оценка за ответ: 3
Комментарий оценки:
можно было бы и пример привести


Вопрос № 84.208
Доброго времени суток!
У меня возник вопрос по сетевому програмированию.
Каким образом передавать кпримеру данные своего типа ?!
Например какой-нить record или например масив.
спс.
Отправлен: 25.04.2007, 21:38
Вопрос задал: Даниил (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: PGM
Здравствуйте, Даниил!

Для сокетов из Дельфи (TClientSocket/TServerSocket) - использовать не SendText, а SendBuf с указанием размера буфера, аналогично ReceiveBuf для приема.

P.S. А вообще-то хорошо было бы уточнить каким именно механизмом (сокетами Дельфи, WinSock API или какими-то готовыми компонентами) вы пользуетесь, чтобы ответ был конкретным по вашей теме.
Ответ отправил: PGM (статус: 5-ый класс)
Ответ отправлен: 26.04.2007, 11:20
Оценка за ответ: 4
Комментарий оценки:
Спсибо за помощь, короткий и ясный ответ!


Вопрос № 84.209
Здравствуйте, уважаемые эксперты!
Как ПРОГРАМНО узнать битрейт у любого MP3 файла?
Отправлен: 25.04.2007, 21:40
Вопрос задал: Win2k (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: PGM
Здравствуйте, Win2k!

Гляньте вот эти пару ссылок, надеюсь поможет:

http://web.1asphost.com/ufogroup/forum/forum_posts.asp?TID=80&get=last -- Структура заголовка MP3

http://www.developeru.info/PermaLink,guid,6ac0aff9-0223-4a05-94ac-995feaac683a.aspx
Работа с заголовком (правда на C#)
Ответ отправил: PGM (статус: 5-ый класс)
Ответ отправлен: 26.04.2007, 11:15
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Очень полезная информация.


Вопрос № 84.220
Здраствуйте эксперты.
У меня такой вопрос, в процедуре OnClose формы я вывожу сообщение: "Вы действительно хотите выйти?" и варианты ответа Да/Нет (код в приложении). Подскажите пожалуста как сделать так что бы при ответе "нет" форма не закрывалась?
Спасибо за ответы.

Приложение:

Отправлен: 25.04.2007, 23:03
Вопрос задал: Иван Ивановввв (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Устинов С.Е.
Здравствуйте, Иван Ивановввв!

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if MessageDlg('Вы действительно хотите выйти?', mtConfirmation, [mbYes,mbNo], 0) = mrNo then Action:=caNone;
end;

Удачи!

---------
Ждешь квалифицированного ответа? Задай правильно вопрос!
Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 25.04.2007, 23:11
Оценка за ответ: 5
Комментарий оценки:
Спасибо, это именно то что мне нужно.

Отвечает: Necromancer
Здравствуйте, Иван Ивановввв!
Это лучше делать в обработчике события OnCloseQuery. Тогда код будет следующим:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := True;
if MessageDlg('Вы действительно хотите выйти?',mtConfirmation,[mbYes,mbNo],0)
= mrNo then CanClose := False;
end;
---------
Никогда не сдавайся, даже если боишься проиграть
Ответ отправил: Necromancer (статус: 2-ой класс)
Ответ отправлен: 25.04.2007, 23:21
Оценка за ответ: 5

Отвечает: Крылов Александр Владимирович
Здравствуйте, Иван Ивановввв!
У формы есть еще один обработчик - OnCloseQuery. Вот код для него:

procedure TLogIn.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var otv:word;
begin
otv := MessageBox(handle,PChar('Вы действительно хотите закрыть программу?'+#13#10), PChar('Закрытие программы'), 292);
if otv=IDYES
then CanClose:=true;
if otv=IDNO
then canClose:=false;
end;
Ответ отправил: Крылов Александр Владимирович (статус: 3-ий класс)
Ответ отправлен: 25.04.2007, 23:27
Оценка за ответ: 5

Отвечает: W@NDeReR
Здравствуйте, Иван Ивановввв!
Я думаю будет проще написать тоже самое но в событии onCloseQuery формы, пример в приложении.

Приложение:

---------
Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.

Ответ отправил: W@NDeReR (статус: 3-ий класс)
Ответ отправлен: 26.04.2007, 20:18
Оценка за ответ: 5


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.51 (beta) от 27.04.2007
Яндекс Rambler's Top100

В избранное