Вопрос № 32802: Уважаемые Эксперты, с Новым годом и с Рождеством!
Подскажите пож-та, каким образом можно в Дельфи работать с МР3 файлами?
В часности, как можно изменить Битрейт файла МР3 с помощью Дельфи?...Вопрос № 32812: Здравствуйте!
Не получается процедура удаления файла.
Подскажите как сделать правильно.
Спасибо.
procedure DeleteF(const FileName:string);
private
{ Private declarations }
public
{ Public declarations }
e...Вопрос № 32822: Здравствуйте!
Не подскажите как послать нажатие правой клавиши мыши другому окну. И возможно ли это сделать при условии что оно(другое окно) будет неактивным?...Вопрос № 32839: Здравствуйте,уважаемые эксперты. Я только начинаю изучать делфию
У меня такой вопрос. Как Вводить текст в Edit из переменной и как вводить.
...Вопрос № 32844: Как вставить в программу собственный курсор?...
Вопрос № 32.802
Уважаемые Эксперты, с Новым годом и с Рождеством!
Подскажите пож-та, каким образом можно в Дельфи работать с МР3 файлами?
В часности, как можно изменить Битрейт файла МР3 с помощью Дельфи?
Отвечает: Ерёмин Андрей
Здравствуйте, Чернявский Александр!
Стандартными средствами Delphi MP3-файл можно разве что открыть и воспроизвести - с помощью TMediaPlayer. Чтобы изменить битрейт (и другие параметры), нужно воспользоваться кодерами. Широкую популярность приобрёл LAME. Он хорошо и достаточно быстро работает с mp3 и wav файлами. Работает исключительно из командной строки. Понимает огромное количество параметров - все они описаны в прилагаемой справке. Вот ссылки на Lame:
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 07.01.2006, 08:45
Вопрос № 32.812
Здравствуйте!
Не получается процедура удаления файла.
Подскажите как сделать правильно.
Спасибо.
procedure DeleteF(const FileName:string);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DeleteF(const FileName: string);
var
f:file;
begin
try
DeleteFile(PChar(FileName));
except
begin
try
AssignFile(f, FileName);
Erase(f);
CloseFile(f);
except
ShowMessage('Удаление невозможно');
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
f: string;
begin
DeleteF (FileName);
DeleteFile(f, 'C:Program Filescall est.exe');// Не идет ошибка
end;
Отправлен: 07.01.2006, 06:18
Вопрос задал: Serhik_z (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Diman_A
Здравствуйте, Serhik_z!
Как я понял, ты хочешь выдать свое сообщение при отсутствии файла на диске. Но зачем столько кода? В delphi присутствует функция fileexists, которая может проверить существование файла. В случае отсутствия файла возвращает false. Вот процедура корректного удаления:
procedure delete(filename:string);
begin
if fileexists (filename) then deletefile (filename)
else showmessage ('Файл не существует');
end;
Ответ отправил: Diman_A (статус: 3-ий класс)
Отправлен: 07.01.2006, 07:49
Отвечает: Denisss Здравствуйте, Serhik_z!
Ошибки и не будет. Смотрите описание функции DeleteFile: function DeleteFile(const FileName: string): Boolean;
Иначе говоря, функция выдает True, если никакой ошибки не произошло и False, если произошла ошибка (файл не существует, либо не удалось его удалить).
Т.о., Вам надо переделать код приблизительно так, как в приложении.
Удачи в Новом Году и с Рождеством!!!
Приложение:
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 07.01.2006, 11:49
Отвечает: D.M.
Здравствуйте, Serhik_z!
В приложении процедура удаления файла....
Выдает ошибку. если не найден файл, или его низя открыть....
P.s.
Не обижайтесь, но у вас отвратный стиль написания кода и фиг его разберешь из-за этого......
Есои хотите, то могу прислать вам хороший документ, который описывает правила холосего тона.... :-)
Приложение:
--------- Зёзики руллллят :)
Ответ отправил: D.M. (статус: 1-ый класс)
Отправлен: 07.01.2006, 13:27
Отвечает: Lexus
Здравствуйте, Serhik_z!
Я считаю, что ошибка у вас в строке:
"DeleteFile(f, 'C:Program Filescall est.exe');"
Здесь функция DeleteFile вызвана с неверными аргументами.
Я вообще не понимаю ее назначения: ведь вы выполняете удаление файла вызовом своей процедуры DeleteF(filename).
Мое предложение: исправить обработчик OnCreate:
procedure TForm1.FormCreate(Sender: TObject);
begin
DeleteF('C:Program Filescall est.exe');
end;
Еще могу предложить упростить саму процедуру удаления. По-моему будет достаточно:
procedure TForm1.DeleteF(const FileName: string);
begin
if fileexists(filename) then
if not(deletefile(pchar(filename))) then showmessage('Удаление невозможно');
end;
Ответ отправил: Lexus (статус: 1-ый класс)
Отправлен: 07.01.2006, 14:35
Вопрос № 32.822
Здравствуйте!
Не подскажите как послать нажатие правой клавиши мыши другому окну. И возможно ли это сделать при условии что оно(другое окно) будет неактивным?
Отправлен: 07.01.2006, 12:16
Вопрос задал: Yxo (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Minor
Здравствуйте, Yxo!
попробуйте вот так:
Windows.SendMessage(Handle,WM_RBUTTONDOWN,MK_RBUTTON,$00050015);
где
Handle вы берете у окна, на которое собираетесь нажать,
например так: Handle:=FindWindow(nil,'Имя окна');
$00050015 - координаты точки на окне в шестнадцетеричной! системе исчисления
(первые 4 цифры - y, вторые 4 цифры - х)
в данном случае это точка (21,5)
Другое окно не обязательно должно быть активным - сам проверил!!! Удачи ;)
--------- Не руби сук, на котором сидишь! Вообще слезь с дерева, человек!
Ответ отправил: Minor (статус: 1-ый класс)
Отправлен: 07.01.2006, 16:12 Оценка за ответ: 5
Вопрос № 32.839
Здравствуйте,уважаемые эксперты. Я только начинаю изучать делфию
У меня такой вопрос. Как Вводить текст в Edit из переменной и как вводить.
Отправлен: 07.01.2006, 19:54
Вопрос задал: Ua4aqc (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Romodos
Здравствуйте, Ua4aqc!
у Edit есть свойство Text типа string (строка)
Вы можете присваивать ему значения
Пример работы в приложении
Вы можете делать это при нажатии на кнопку
или при событии Edit OnChange
Надеюсь, помог вам.
Приложение:
--------- FAQ me off!
Ответ отправил: Romodos (статус: Практикант)
Отправлен: 07.01.2006, 20:14
Отвечает: Ерёмин Андрей
Здравствуйте, Ua4aqc!
Вот так присваивать переменной значение из TEdit: Var S: String; X: Integer; Z: Real;
...
S:=Edit1.Text;
X:=StrToInt(Edit1.Text);
Z:=StrToFloat(Edit1.Text);
А вот так помещать текст в TEdit из переменных: Var S: String; X: Integer; Z: Real;
...
Edit1.Text:=S;
Edit1.Text:=IntToStr(X);
Edit1.Text:=FloatToStr(Z); --------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 07.01.2006, 22:05
Отвечает: Diman_A
Здравствуйте, Ua4aqc!
У компонента Edit есть свойство Text, которое позволяет делат с текстом в Edit что хочешь (тип String). Например:
Передать текст Edit-у: form1.edit1.text:=str;
Получить текст из Edit-а: str:=form1.edit1.text;
Если тебе нужно показать в Edit значения переменных целого типа (integer, longint), то нужно их преобразовать в String: astr:=inttostr(a); Если получить из string в целый тип - a:=strtoint(astr);
Ответ отправил: Diman_A (статус: 3-ий класс)
Отправлен: 08.01.2006, 07:12
Отвечает: Schmak
Здравствуйте, Ua4aqc!
Edit имеет свойтво text типа string, в котором хранится строка введённая (отображаемая) в Edite. С этим свойством можно производить все (ну или почти все), что и с обычными строками. Для того чтобы изменить текст надо просто присвоить новое значение: Edit1.Text:='Новое значение'. Для того чтобы получить введённый текст надо просто взять значение свойства Text: s:=Edit1.Text, s:string(строка).
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Практикант)
Отправлен: 08.01.2006, 10:43 Оценка за ответ: 5
Отвечает: Lexus
Здравствуйте, Ua4aqc!
У Edit есть свойство .text - текстового типа (string)
Следовательно ваша задача решается так (см.приложение)
Приложение:
Ответ отправил: Lexus (статус: 1-ый класс)
Отправлен: 08.01.2006, 13:29
Вопрос № 32.844
Как вставить в программу собственный курсор?
Отправлен: 07.01.2006, 21:26
Вопрос задал: Sassoft (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ерёмин Андрей
Здравствуйте, Sassoft!
Во-первых, необходимо получит handle курсора, а затем определить его в массиве курсоров компонента TScreen. Индексы предопределенных курсоров системы отрицательны, а пользователь может определить курсор, индекс которого положителен.
procedure TForm1.Button1Click(Sender: TObject);
var h : THandle;
begin h := LoadImage(0, 'C:TheWallMagic.ani', IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE or
LR_LOADFROMFILE);
if h = 0 then ShowMessage('Cursor not loaded')
else begin Screen.Cursors[1] := h;
Form1.Cursor := 1;
end;
end;
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 07.01.2006, 22:18
Отвечает: REFERI
Здравствуйте, Sassoft!
Смотрите на DelphiWorld - там полно различных и понятных! примеров. Если вы не пользуетесь DelphiWorld, тогда срочно качайте это дело http://delphiworld.narod.ru/
не пожалеете.
Удачи!
--------- Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 08.01.2006, 02:21
Отвечает: Diman_A
Здравствуйте, Sassoft!
Это смотря как вставлять. Можно заменить стандартный. Можно сделать свой. Курсор можно хранить на диске, можно в ресурсах. Постараюсь описать тебе все.
1) создание переменной для своего курсора и загрузка его из ресурсов.
const
crMyCursor = 5;
{$r cursor.res}
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'mycursor');
Cursor := crMyCursor;
end;
{под именем mycursor в res-файле должен храниться файл курсора}
2) замена стандартного курсора с загрузкой с диска.
procedure TForm1.FormCreate(Sender: TObject);
var h: THandle;
begin
h := LoadImage(0, 'cursor.cur', IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE);
Screen.Cursors[crSizeAll] := h; { замена crsizeall своим курсором т.е. у формы св-во cursor должно быть поставлено в crsizeall}
end;
Примечание: в нормальной ситуации необходимо удалить любые ресурсы курсоров с помощью DeleteCursor, тем не менее, в Delphi в этом нет необходимости, поскольку Delphi сама удаляет все курсоры из массива Cursors.
Ответ отправил: Diman_A (статус: 3-ий класс)
Отправлен: 08.01.2006, 07:11
Отвечает: Lexus
Здравствуйте, Sassoft!
В каждом проекте Delphi определяет глобальный объект с именем Screen (тип TScreen), который, между прочим, определяет массив курсоров, называемый Cursors. Когда вы щелкаете на свойстве Cursor в Инспекторе объектов, выпадающий список и есть список элементов указанного массива.
Для предустановленных курсоров Delphi использует элементы массива с индексами начиная с -1 и ниже (т.е. только отрицательные числа), поэтому собственные курсоры вы можете размещать с порядковым номером, начинающимся с нуля и выше.
Решение в приложении.
Приложение:
Ответ отправил: Lexus (статус: 1-ый класс)
Отправлен: 08.01.2006, 14:36