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

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


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

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

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

Выпуск № 347
от 06.01.2006, 22:48

Администратор:Калашников О.А.
В рассылке:Подписчиков: 230, Экспертов: 49
В номере:Вопросов: 9, Ответов: 34


Вопрос № 32484: C Новым годом Вас !!! Желаю всем удачи в Новом году, благополучия, кучу гениальных идей и исполнения всех самых сокровенных желаний....
Вопрос № 32489: Здравствуйте! Есть строка1, из неё нужно получить строку2 состоящую из строки1 без последних двух символов....
Вопрос № 32491: Здравствуй! У мяне Delphi 2005, вот скачал я кампанэнт TKnob, как мнэ сдэлат штоб он паявился в Delphi 2005 и его можна было размещат на форме....
Вопрос № 32494: Здравствуйте, уважаемые эксперты. 1.Нужно чтобы по двойному щелчку по ListBox1 в Edit1 появилось содержание строки по которой щёлкнули в ListBox. 2.Может кто встречал компонент в виде кругового прогрессбара? Очень надо.......
Вопрос № 32497: Здравствуйте, уважаемые эксперты! Скажите, пожалуйста, как узнать закончился ли медиа файл (или остановился ли плеер) если используется FilterGraph из DSPack-a? Свойств Mode как у MediaPlayer-a там нету. Спасибо!...
Вопрос № 32503: Уважаемые эксперты,у меня возник к Вам небольшой вопрос.Программа отправляет письмо на e-mail,как сделать чтобы копии писем отправить на другие адреса?...
Вопрос № 32504: Здравствуйте уважаемые эксперты! Есть папка в которой лежит программа в этой папке есть ещё папка "Thems" в которой находится куча папок, мне нужно получить в Listbox названия всех этих папок. Как это лучше сделать?...
Вопрос № 32506: Как узнать в каком каталоге находится программа?...
Вопрос № 32507: 1.Как узнать длину(в минутах) трека загруженого в TMediaPlayer? 2.Как регулировать громкость всей системы?? 3.Как узнать когда закончится трек???...

Вопрос № 32.484
C Новым годом Вас !!!
Желаю всем удачи в Новом году, благополучия, кучу гениальных идей и исполнения всех самых сокровенных желаний.
Отправлен: 01.01.2006, 02:06
Вопрос задал: source (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

Огромное спасибо, Вам того же! Присоединяюсь к поздравлению и всех поздравляю! ;-)
---------
Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и вперед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 02.01.2006, 20:20


Вопрос № 32.489
Здравствуйте!
Есть строка1, из неё нужно получить строку2 состоящую из строки1 без последних двух символов.
Отправлен: 01.01.2006, 10:21
Вопрос задал: Клёмин Сергей (статус: Посетитель)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, SuperXakep!
Запросто:

Str2:=Copy(Str1,1,Length(Str1)-2);


С наступившим! :)
---------
Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 01.01.2006, 10:33
Оценка за ответ: 5

Отвечает: Hdd
Здравствуйте, SuperXakep!

...
var str1,str2:string;
...
str2:=copy(str1,0,length(str1)-2;

{ str1:=trim(str1)
str2:=copy(str1,0,length(str1)-2; ---если не хотишь учитывать пробелы}

{можно так же вот так:
delete(str2,length(edit1.Text)-1,2);
str2:=str1; }
Ответ отправил: Hdd (статус: 1-ый класс)
Отправлен: 01.01.2006, 11:12

Отвечает: Schmak
Здравствуйте, SuperXakep!
Ничего сложного нет
Str2:=Copy(Str1,1,Length(Str1)-2);
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 01.01.2006, 11:41
Оценка за ответ: 5

Отвечает: Dushin Igor
Здравствуйте, SuperXakep!
Stroka2:=Copy(Stroka1,1,Lenght(Stroka1)-2);
---------
Храни меня Господь, в сухом прохладном месте! =)
Ответ отправил: Dushin Igor (статус: 2-ой класс)
Отправлен: 01.01.2006, 12:35
Оценка за ответ: 5

Отвечает: Denisss
Здравствуйте, SuperXakep!
Cпособ №1:

  Str2:= Copy(Str1, 1, Length(Str1) - 2);


Способ №2:
// копируем полностью первую строку во вторую
  Str2:= Str1;
// Устанавливаем длину второй строки на 2 меньше
  SetLength(Str2, Length(Str1) - 2);


Cпособ №3:
// Сразу устанавливаем длину
  SetLength(Str2, Length(Str1) - 2);
// Теперь копируем содержимое первой строки
Move(Str1[1], Str2[1], Length(Str2));
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 01.01.2006, 13:19
Оценка за ответ: 5

Отвечает: Diman_A
Ответом на твой вопрос будет команда
delete (a,length(a)-1,2);
------------------------------------------------------------
Процедура Delete
------------------------------------------------------------
Функция: Удаляет из строки подстроку.
Описание: Delete(var s : string; индекс : integer;
счетчик : integer)
Примечания: Параметр s представляет собой выражение
строкового типа. Параметры "индекс" и "счетчик" являются вы-
ражениями целого типа. Функция Delete удаляет символы, коли-
чество которых соответствует параметру "счетчик", начиная с
символа строки s, номер которого задан параметром "индекс".
Если значение параметра "индекс" превышает длину строки, то
символы не удаляются. Если параметр "счетчик" задает больше
символов, чем остается в строке, начиная с символа "индекс",
то удаляется остаток строки.
------------------------------------------------------------
Функция Length
------------------------------------------------------------
Функция: Возвращает динамическую длину строки.
Описание: Length(s : string)
Тип результата: Целый (integer).
Примечания: Параметр s представляет собой выражение
строкового типа. Результатом будет длина s.
Ответ отправил: Diman_A (статус: 2-ой класс)
Отправлен: 01.01.2006, 14:54
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, SuperXakep!
Можно сделать так:
stroka2:=Copy(stroka1-Length(stroka1)-2);
Ответ отправил: sir henry (статус: Академик)
Отправлен: 02.01.2006, 09:28
Оценка за ответ: 5

Отвечает: Toxic~Fire
Здравствуйте, SuperXakep!
Вот тебе функция
function stroka2(stroka1:string);
begin
result:=copy(stroka1,1, length(stroka1)-2);
end;

Вот тебе описание функций для работы со строками:

Function Copy(S: String; Index, Count: Integer): String;
Возвращает подстроку строки.

S - выражение типа String. Index и Count - выражения целого типа. Функция возвращает строку, содержащую Count символов, начинающихся с позиции Index.
Если Index больше, чем длина S, функция возвращает пустую строку.

Procedure Delete(var S: String; Index, Count:Integer);
Удаляет подстроку символов длиной Count из строки S, начиная с позиции Index.

S - переменная типа String. Index и Count - выражения целого типа.
Если Index больше, чем длина S, символы не удаляются.

Procedure Insert(Source: String; var S: String; Index: Integer);
Объединяет подстроку в строку, начиная с определенной позиции.

Source - выражение типа String. S - переменная типа String любой длины. Index - выражение целочисленного типа.
Insert вставляет Source в S, начиная с позиции S[Index].

Function Length(S: String): Integer;
Возвращает число символов, фактически используемое в строке S.
Обратите внимание: при использовании строк с нуль-окончанием, число символов не обязательно равно числу байтов.

Function Pos(Substr: String; S: String): Integer;
Ищет подстроку в строке.

Pos ищет Substr внутри S и возвращает целочисленное значение, которое является индексом первого символа Substr внутри S.
Если Substr не найден, Pos возвращает ноль.
Ответ отправил: Toxic~Fire (статус: 2-ой класс)
Отправлен: 02.01.2006, 11:41


Вопрос № 32.491
Здравствуй!
У мяне Delphi 2005, вот скачал я кампанэнт TKnob, как мнэ сдэлат штоб он паявился в Delphi 2005 и его можна было размещат на форме.
Отправлен: 01.01.2006, 12:40
Вопрос задала: Вагив Абдугалимович Дрочилашвили (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dushin Igor
Здравствуйте, Вагив Абдугалимович Дрочилашвили!
Да в Delphi 2005 изменилась установка компонентов.
Вот сдесь рассказывается как это сделать:
http://alexey-lab.narod.ru/delphi_component.htm
Удачи!!!
---------
Храни меня Господь, в сухом прохладном месте! =)
Ответ отправил: Dushin Igor (статус: 2-ой класс)
Отправлен: 01.01.2006, 14:05
Оценка за ответ: 5
Комментарий оценки:
Супэр!!!

Отвечает: sir henry
Здравствуйте, Вагив Абдугалимович Дрочилашвили!
Нужно в меню Component выбрать Install Componet и установить его.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 02.01.2006, 09:25


Вопрос № 32.494
Здравствуйте, уважаемые эксперты.
1.Нужно чтобы по двойному щелчку по ListBox1 в Edit1 появилось содержание строки по которой щёлкнули в ListBox.
2.Может кто встречал компонент в виде кругового прогрессбара? Очень надо....
Отправлен: 01.01.2006, 14:37
Вопрос задал: Клёмин Сергей (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, SuperXakep!
1) Обрабатываем событие OnClick для ListBox:

procedure TForm1.ListBox1Click(Sender: TObject);
begin
Edit1.Text:=ListBox1.Items[ListBox1.ItemIndex];
end;


2) Воспользуйтесь TGauge (страница Samples), установив у него Kind = gkPie.
---------
Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 01.01.2006, 14:45
Оценка за ответ: 5

Отвечает: Diman_A
Здравствуйте, SuperXakep!
Событие OndblClick:
procedure TForm1.ListBox1DblClick(Sender: TObject);
var
Loop: Integer;
begin
for Loop := 0 to Listbox1.Items.Count - 1 do
if Listbox1.Selected[Loop] then
edit1.text:=(Listbox1.Items.Strings[Loop]);
end;
Ответ отправил: Diman_A (статус: 2-ой класс)
Отправлен: 01.01.2006, 15:46

Отвечает: sir henry
Здравствуйте, SuperXakep!
1. В событии OnDblClick (обработка двойного щелчка) прописать:
Edit1.Text:=ListBox1.Items[ListBox1.ItemIndex];
ItemIndex - это индекс выделенного пункта в ListBox'е. Когда Вы щелкаете по какому-нибудь пункту, он выделяется.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 02.01.2006, 09:21
Оценка за ответ: 5

Отвечает: Toxic~Fire
Здравствуйте, SuperXakep!

1. Обрабатываешь событие OnListBox1DblClick у ListBox`a

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
if ListBox1.ItemIndex <> -1 then //Чтобы не было ошибки, когда ты промахнёшься мимо ячейки
edit1.Text:=ListBox1.Items.Strings[ListBox1.itemindex]; //Вставляем
end;

2. На вкладке Samples: создаёшь Gauge1 и меняешь свойство Kind:=gkHorizontalBar на Kind:=dkPie
Стандартный компонент
Ответ отправил: Toxic~Fire (статус: 2-ой класс)
Отправлен: 02.01.2006, 11:41


Вопрос № 32.497
Здравствуйте, уважаемые эксперты!

Скажите, пожалуйста, как узнать закончился ли медиа файл (или
остановился ли плеер) если используется FilterGraph из DSPack-a?
Свойств Mode как у MediaPlayer-a там нету.

Спасибо!
Отправлен: 01.01.2006, 16:47
Вопрос задал: Vic (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Denisss
Здравствуйте, Vic!

По окончанию воспроизведения файла, в FilterGraph происходит событие OnGraphComplete.
Смотрите примеры (папка DSPackDemos).

Удачи в Новом Году!
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 02.01.2006, 01:58


Вопрос № 32.503
Уважаемые эксперты,у меня возник к Вам небольшой вопрос.Программа отправляет письмо на e-mail,как сделать чтобы копии писем отправить на другие адреса?

Приложение:

Отправлен: 01.01.2006, 18:34
Вопрос задал: Vadym (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Vadym!
В письме, там где пишешь поле адреса 'To:', добавляешь еще поле адреса 'Cc:' или 'BCc:'
И все
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 01.01.2006, 18:40

Отвечает: Schmak
Здравствуйте, Vadym!
Не могу утверждать точно, но должно помочь:
После строк
m.Recipients.Add;
m.Recipients.Items[0].Text:='a@mail.ru';
вставьте строки
m.Recipients.Add;
m.Recipients.Items[1].Text:='b@mail.ru';

m.Recipients.Add;
m.Recipients.Items[2].Text:='c@mail.ru';
...
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 02.01.2006, 09:14


Вопрос № 32.504
Здравствуйте уважаемые эксперты!
Есть папка в которой лежит программа в этой папке есть ещё папка "Thems" в которой находится куча папок, мне нужно получить в Listbox названия всех этих папок. Как это лучше сделать?
Отправлен: 01.01.2006, 18:39
Вопрос задал: Клёмин Сергей (статус: Посетитель)
Всего ответов: 7
Мини-форум вопроса >>> (сообщений: 0)

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

1) А ты книжки читать не пробовал?
2) А головой поработать лень?
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 01.01.2006, 18:43
Оценка за ответ: 1
Комментарий оценки:
Почему такой ответ? Запоминать я не могу так как инвалид! Вот и приходиться спрашивать каждую проблему! Когда нашёл RusFaq очень обрадовался, всё просто задаёшь вопрос получаешь ответ, то что мне надо.

Отвечает: Ерёмин Андрей
Здравствуйте, SuperXakep!
Вопрос 32454 - точно такой же. Там я дал подробный ответ:
http://rusfaq.ru/?Step=info&Action=Question&ID=32454#3630.

Приложение:

---------
Работа - не волк, а произведение силы на расстояние!

Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 01.01.2006, 18:49
Оценка за ответ: 5

Отвечает: Minor
Здравствуйте, SuperXakep!
вот попробуйте такую процедурку

Приложение:

Ответ отправил: Minor (статус: 1-ый класс)
Отправлен: 01.01.2006, 19:06

Отвечает: Schmak
Здравствуйте, SuperXakep!
Для представления дерева папок можно использовать компонент TDirectoryListBox со вкладки Win 3.1. Если же Вам обязательно надо вывести список папок в Listbox, то можете использовать приведённый ниже код.

Приложение:

---------
Не всё то Windows, что висит!

Ответ отправил: Schmak (статус: Студент)
Отправлен: 02.01.2006, 09:08

Отвечает: sir henry
Здравствуйте, SuperXakep!
С помощью связки функций FindFirst и FindNext.
var
sr: TSearchRec;
FileAttrs: Integer;
Begin
if FindFirst('Themes*.*', faDirectory, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory) = faDirectory then
ListBox1.Items.Add(sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);
End;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 02.01.2006, 09:14
Оценка за ответ: 5

Отвечает: Toxic~Fire
Здравствуйте, SuperXakep!
По нажатию кнопки Button1:

procedure TForm1.Button1Click(Sender: TObject);
var
R:TSearchRec;
Path:PChar;
begin
Listbox1.Clear;
path:=pchar(extractfilepath(application.Name)+'Thames'); //Путь к твоей папке
if findfirst(Path+'*.*',fadirectory,r) = 0 then //Поверяем файлы
begin
if r.Attr = fadirectory then //Если У найденного файла атрибут "Папка"
listbox1.Items.Add(r.Name);// То выводим его в ListBox1
while findnext(r) = 0 do
if r.Attr = fadirectory then
listbox1.Items.Add(r.Name);
end;
listbox1.Items.Delete(0); //Только если это не корневой каталог
listbox1.Items.Delete(0); //Только если это не корневой каталог
end;
Ответ отправил: Toxic~Fire (статус: 2-ой класс)
Отправлен: 02.01.2006, 11:40

Отвечает: Лучников Юрий Владимирович
Здравствуйте, SuperXakep!
Написать рекурсивную функцию с использованием TFindFirstTFindNext структур...
Ответ отправил: Лучников Юрий Владимирович (статус: 8-ой класс)
Отправлен: 02.01.2006, 13:57


Вопрос № 32.506
Как узнать в каком каталоге находится программа?
Отправлен: 01.01.2006, 20:29
Вопрос задал: Клёмин Сергей (статус: Посетитель)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Minor
Здравствуйте, Клёмин Сергей!
Смотря в каком случае, попробуйте
Application.ExeName
или
Paramstr(0)
В первом случае работает только при наличии обьекта Application, во втором - без ограничений
Ответ отправил: Minor (статус: 1-ый класс)
Отправлен: 01.01.2006, 20:48
Оценка за ответ: 5

Отвечает: Ерёмин Андрей
Здравствуйте, Клёмин Сергей!
Легко:

ProgramDir:=ExtractFilePath(Application.ExeName);


---------
Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 01.01.2006, 21:50

Отвечает: Denisss
Здравствуйте, Клёмин Сергей!

1. ExtractFileDir(ParamStr(0));
- возвращает папку, в которой лежит программа (c:, c:windows)
- слэш "" будет ставиться в конце строки только если Ваша программа лежит в корне диска (c:, d:, ...)
2. ExtractFilePath(ParamStr(0));
- тоже возвращает путь. Отличается тем, что в этом случае в конце строки всегда будет стоять слэш "" (c:, c:windows).

Кроме ParamStr(0) можно использовать Application.ExeName, но если Вы посмотрите реализацию этого свойства, то увидите, что в нем также используется ParamStr(0).

Удачи в Новом Году!
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 02.01.2006, 01:46
Оценка за ответ: 5

Отвечает: Diman_A
Здравствуйте, Клёмин Сергей!
ExtractFilePath(Application.ExeName) - результат String
Ответ отправил: Diman_A (статус: 2-ой класс)
Отправлен: 02.01.2006, 07:34
Оценка за ответ: 5

Отвечает: Schmak
Здравствуйте, Клёмин Сергей!
Всё очень просто:
ExtractFilePath(Application.ExeName)
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 02.01.2006, 08:53
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Клёмин Сергей!
С помощью функции ExtractFilePath(Application.ExeName).
Название программы - ExtractFileName(Application.ExeName).
Ответ отправил: sir henry (статус: Академик)
Отправлен: 02.01.2006, 09:06
Оценка за ответ: 5

Отвечает: Toxic~Fire
Здравствуйте, Клёмин Сергей!
form1.Caption:=Extractfilepath(application.exename);
Ответ отправил: Toxic~Fire (статус: 2-ой класс)
Отправлен: 02.01.2006, 11:39

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Клёмин Сергей!
Вопрос задан неточно - непонятно какой именно программы.
Если вы имеете ввиду путь самой себя, то Application.ExeName

Успехов!
Ответ отправил: Лучников Юрий Владимирович (статус: 8-ой класс)
Отправлен: 02.01.2006, 14:00


Вопрос № 32.507
1.Как узнать длину(в минутах) трека загруженого в TMediaPlayer?
2.Как регулировать громкость всей системы??
3.Как узнать когда закончится трек???
Отправлен: 01.01.2006, 20:36
Вопрос задал: Клёмин Сергей (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Клёмин Сергей!
1. С помощью свойства TrackLength[Track]. Это массив длин треков, индексом задается номер трека. Формат, в котором выдается длина трека, задается свойством TimeFormat. Количество траков - в свойстве Tracks.
2. Если речь идет о регулировании типа WAVE, то в модуле mmsystem есть функция waveOutSetVolume(WAVE_MAPPER, AVolume). Здесь AVolume это громкость в обеих каналах. Тип LongInt, старший разряд - правый канал, младший разряд - левый.
3. Элементарно. Вычесть из длины дорожки текущую позицию в треке:
TrackLength[Track]-Position;
Ответ отправил: sir henry (статус: Академик)
Отправлен: 02.01.2006, 09:01
Оценка за ответ: 5


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

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

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

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

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


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


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

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

В избранное