Вопрос № 126600: Здравствуйте уважаемые эксперты.
пишу программу, которая работает с mp3 тегами.
в приложении изложена идея.
проблема в том, что такой метод лишь дописывает файл, мне же не обходимо переписывать последние 128 символов (или удалять и записы...Вопрос № 126635: Здравствуйте! Delphi 7. Следующая задача. Разработать программу, которая позволит вычислять произведение произвольных чисел и находить квадрат произвольного числа.
Произвольные числа вводить с помощью двух ползунков TrackBar.
Расположение пол...Вопрос № 126717: Добрый день, уважаемые эксперты! У меня такой вопрос. Как определить количество лет, месяцев и дней между двумя датами....
Вопрос № 126.600
Здравствуйте уважаемые эксперты.
пишу программу, которая работает с mp3 тегами.
в приложении изложена идея.
проблема в том, что такой метод лишь дописывает файл, мне же не обходимо переписывать последние 128 символов (или удалять и записывать заново)
Заранее спасибо.
Буду рад любой критике и помощи и советам
Ваша программа работает именно так, как Вы и хотите. Однако ошибки и замечания все же есть:
1. Правильнее пользоваться методами Write и Read, как советует Help.
2. Из f.size правильно вычитать 128, чтобы позиционироваться в файле с отступом в 128 байт.
3. Лучше все же самому контролировать длину считываемой и записываемой строки. Для этого надо
- описать s как переменную типа string;
- перед операцией чтения устанавливать длину строки s равной числу считываемых байт (функция SetLength)
- чтение производить в буфер, начинающийся с s[1]
- по окончании чтения проверять число прочитанных байт и по необходимости корректировать длину строки.
Вот что у меня получилось (см приложение).
Приложение:
Ответ отправил: Sosedov A.I. (статус: 3-ий класс)
Ответ отправлен: 10.03.2008, 14:49 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за все, обязательно переделаю свой код
Вопрос № 126.635
Здравствуйте! Delphi 7. Следующая задача. Разработать программу, которая позволит вычислять произведение произвольных чисел и находить квадрат произвольного числа.
Произвольные числа вводить с помощью двух ползунков TrackBar.
Расположение ползунка выводить с помощью двух Label.
Вычислять произведение в зависимости от положения ползунка первого TrackBar. Результат выводить с помощью Label находящийся в компоненте GroupBox с заголовком "Произведение".
При помощи компонента CheckBox изменять заголовок GroupBox "Произведение" на "Квадрат" и выполнять вычисление квадрата произвольного числа в зависимости от одновременного изменения двух ползунков . После удалении "галочки" восстановление заголовка GroupBox выполнять вычисление произведение произвольных чисел.
В приложении находится пример главного модуля программы (Unit 4). Закомментировал по-максимуму (на всякий случай).
Если честно, то не совсем уверен, что правильно понял суть задачи:
1. Если я правильно понял, то "Вычислять произведение в зависимости от положения ползунка первого TrackBar" означает, что при перемещении второго ползунка не должно вызывать пересчет произведения.
Если это не так, то следует добавить в конец обработчика события TrackBar2.OnChange: Label3.Caption:= IntToStr(TrackBar1.Position * TrackBar2.Position);
2. "...в зависимости от одновременного изменения двух ползунков..." - здесь я понял так, что при установленной галочке ползунки должны перемещаться одновременно.
PS
К ответу прикреплен весь проект в архиве.
Удачи!
Приложение:
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Будь осторожен, когда молишься ради чего-то, потому что можешь это получить...
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва ICQ: 281599577 ---- Ответ отправлен: 11.03.2008, 13:22
Вопрос № 126.717
Добрый день, уважаемые эксперты! У меня такой вопрос. Как определить количество лет, месяцев и дней между двумя датами.
Отвечает: Zubex
Здравствуйте, Avramenko Serge Nikolaevich!
Для определения разницы между двумя датами используйте следующие функции:
- кол-во лет - YearsBetween(дата1,дата2);
- кол-во месяцев - MonthsBetween(дата1,дата2);
- кол-во дней - DaysBetween(дата1,дата2).
Удачи.
--------- Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 8-ой класс)
Ответ отправлен: 11.03.2008, 10:27 Оценка за ответ: 5 Комментарий оценки: Но это не совсем то, что было нужно. Видимо я не правильно сформулировал вопрос
Отвечает: Louken
Здравствуйте, Avramenko S.N.!
//Нужно подключить:
uses DateUtils;
//Чудо процедура:
procedure GetDayMonthYear(const dt1, dt2: TDateTime; var d,m,y: integer);
var ds: Double;
begin
ds:=DaySpan(dt1, dt2); //Количество дней прошедших между двумя датами
y:=Trunc(ds/ApproxDaysPerYear); //Количество полных лет
ds:=ds-y*ApproxDaysPerYear; //Количество дней, за вычетом y-лет
m:=Trunc(ds/ApproxDaysPerMonth); //Количество полных месяцев
d:=Trunc(ds-m*ApproxDaysPerMonth); //Количество дней
end;
//Использовать примерно так:
var dt1, dt2: TDateTime;
d,m, y: integer;
begin
dt1:=StrToDate('31.05.2006');
dt2:=StrToDate('01.02.2008');
GetDayMonthYear(dt1, dt2, d,m,y);
ShowMessage(inttostr(d)+', '+inttostr(m)+', '+inttostr(y));
end;
Ответ отправил: Louken (статус: Студент)
Ответ отправлен: 11.03.2008, 12:34 Оценка за ответ: 5 Комментарий оценки: Получилось очень изящно!
Отвечает: Genia007
Здравствуйте, Avramenko S.N.! В своё время меня тоже интересовал этот же вопрос, на что я накидал эту программку, единственный недостаток это - высокосные года, с которыми мне лень было разбираться, и ещё я использовал модернизированные кнопки BitBtn, в которых я воткнул выбор цвета кнопки. Идея вычисления должна быть Вам понятна.
Приложение:
Ответ отправил: Genia007 (статус: 7-ой класс)
Ответ отправлен: 11.03.2008, 15:30 Оценка за ответ: 5 Комментарий оценки: У меня получилось примерно то же самое