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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1127
от 20.04.2008, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 448, Экспертов: 50
В номере:Вопросов: 2, Ответов: 5

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 132197: Здравствуйте! Подскажите как отсортировать данные в ListBox. Есть список такого вида, который нужно сортировать по номеру: (Символ номера + номер <далее пробел> и далее некоторые данные, не имеет значения какие) ----------------...
Вопрос № 132220: Я пишу мр3-плеер на Delphi. Как реализовать регулятор громкости? За ранее спасибо....

Вопрос № 132.197
Здравствуйте!
Подскажите как отсортировать данные в ListBox.
Есть список такого вида, который нужно сортировать по номеру:
(Символ номера + номер <далее пробел> и далее некоторые данные, не имеет значения какие)
-----------------------
№1 12.12.05 Авб
№2 12.12.05 Йцукен
№4 12.12.05 Фывапр
№3 12.12.05 Ячсмит
...
№115 12.12.05 Qwerty
№123 12.12.05 Asdfgh
№116 12.12.05 Zxcvbn
№117 12.12.05 Poiuyt
...
и т.д.
---------------------------
Стандартный способ или нагугленные процедуры сортируют так:
№103 12.12.05 Asdfgh
№1231 12.12.05 Zxcvbn
№115 12.12.05 Zxcvbn
№1151 12.12.05 Zxcvbn
Получаемый список даже читать трудно.

А нужно вот так (т.е. нормально по номеру все отсортировать, сверху вниз):
№115 12.12.05 Zxcvbn
№123 12.12.05 Asdfgh
№1151 12.12.05 Zxcvbn
№1231 12.12.05 Zxcvbn

Подскажите какой-нибудь подходящий способ сортировки. Имею ввиду конкретную программу.
Отправлен: 14.04.2008, 20:02
Вопрос задал: Upgrader (статус: 7-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Drbear
Здравствуйте, Upgrader!

При уникальных номерах попробуйте такую процедуру (в приложении).
Использовался список строк:
№1 12.12.05 Авб
№500 12.12.05 Poiuyt
№118 12.12.05 Poiuyt
№1151 12.12.05 Йцукен
№81 12.12.05 Poiuyt
№4 12.12.05 Фывапр
№67 12.12.05 Poiuyt
№3 12.12.05 Ячсмит
№115 12.12.05 Qwerty
№47 12.12.05 Poiuyt
№123 12.12.05 Asdfgh
№1231 12.12.05 Asdfgh
№5 12.12.05 Ячсмит
№211 12.12.05 Poiuyt
№116 12.12.05 Zxcvbn
№6 12.12.05 Ячсмит
№15 12.12.05 Poiuyt
№117 12.12.05 Poiuyt
№7 12.12.05 Ячсмит

результат:
№1 12.12.05 Авб
№2 12.12.05 Йцукен
№3 12.12.05 Ячсмит
№4 12.12.05 Фывапр
№5 12.12.05 Ячсмит
№6 12.12.05 Ячсмит
№7 12.12.05 Ячсмит
№15 12.12.05 Poiuyt
№47 12.12.05 Poiuyt
№67 12.12.05 Poiuyt
№81 12.12.05 Poiuyt
№115 12.12.05 Qwerty
№116 12.12.05 Zxcvbn
№117 12.12.05 Poiuyt
№118 12.12.05 Poiuyt
№123 12.12.05 Asdfgh
№211 12.12.05 Poiuyt
№500 12.12.05 Poiuyt

результат
№1 12.12.05 Авб
№3 12.12.05 Ячсмит
№4 12.12.05 Фывапр
№5 12.12.05 Ячсмит
№6 12.12.05 Ячсмит
№7 12.12.05 Ячсмит
№15 12.12.05 Poiuyt
№47 12.12.05 Poiuyt
№67 12.12.05 Poiuyt
№81 12.12.05 Poiuyt
№115 12.12.05 Qwerty
№116 12.12.05 Zxcvbn
№117 12.12.05 Poiuyt
№118 12.12.05 Poiuyt
№123 12.12.05 Asdfgh
№211 12.12.05 Poiuyt
№500 12.12.05 Poiuyt
№1151 12.12.05 Йцукен
№1231 12.12.05 Asdfgh

Надеюсь, помог Вам.

Приложение:

Ответ отправил: Drbear (статус: 9-ый класс)
Ответ отправлен: 14.04.2008, 21:09
Оценка за ответ: 4

Отвечает: PavelGM
Здравствуйте, Upgrader!

Можно предложить вот такой вариант. Но если список большой тогда его лучше сразу считывать в StringList, сортировать, а уже потом в ListBox.

P.S. Если в одинаковых номерах нужна внутренняя сортировка по другим полям, то это можно реализовать там где result := 0 (т.е. при равенстве i1 и i2 учитывать дополнительные условия).

Приложение:

Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 16.04.2008, 10:26
Оценка за ответ: 5
Комментарий оценки:
Спасибо, помогло! Как это оказывается просто можно сделать :) Наконец-то сортировка заработала нормально! Хотелось бы за ваш ответ поставить 10 :)


Вопрос № 132.220
Я пишу мр3-плеер на Delphi. Как реализовать регулятор громкости? За ранее спасибо.
Отправлен: 14.04.2008, 23:30
Вопрос задал: Бикметов Иршат Ринатович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысенков Антон Анатольевич
Здравствуйте, Бикметов Иршат Ринатович!

1. В приложении находится код который изменяет по щелчку на Button1 убавляет громкость наполовину не меняя общий системный уровень звука.

2. Если требуется менять общий уровень тогда так:

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
volume := 6500* (TrackBar1.Max - TrackBar1.Position);
volume := volume + (volume shl 16);
waveOutSetVolume(WAVE_MAPPER,volume);
end;

Приложение:

Ответ отправил: Лысенков Антон Анатольевич (статус: Студент)
Ответ отправлен: 15.04.2008, 08:48

Отвечает: Gladiator
Здравствуйте, Бикметов Иршат Ринатович!
Вот один из способов реализации вашей задачи. Для этого необходим заголовочный файл AMixer.pas, который вы можете взять отсюда http://depositfiles.com/files/4754311.

Приложение:

Ответ отправил: Gladiator (статус: Студент)
Ответ отправлен: 15.04.2008, 08:50

Отвечает: Genia007
Здравствуйте, Бикметов Иршат Ринатович!
Попробуйте использовать следующий код:
uses mmsystem;

function GetWaveVolume: DWord;
var
Woc: TWAVEOUTCAPS;
Volume: DWord;
begin
result := 0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end;

procedure SetWaveVolume(const AVolume: DWord);
var
Woc: TWAVEOUTCAPS;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
LeftVolume := TrackBar1.Position;
RightVolume := TrackBar2.Position;
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;

procedure TForm1.TrackBar2Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
LeftVolume := TrackBar1.Position;
RightVolume := TrackBar2.Position;
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Caption := IntToStr(GetWaveVolume);
end;

Поставте трэкбары - максимум 50000,
позицию в 25000.
Ответ отправил: Genia007 (статус: 7-ой класс)
Ответ отправлен: 15.04.2008, 12:02


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное