Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2017, 00:29   #41
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

вернее UTF16LeToAnsi

Alex11223 ваши подсказки помогли


заработало вот
Код:
function FindTags(TagName, sFinds: String): string;
var
 ipos, i: integer;
 S, SS: String;
 bSize: byte;
begin
 TagName:= TagName +  #0#0#0;
 ipos:= Pos(TagName, sFinds);
 if ipos <> 0 then
 begin
 Inc(ipos, Length(TagName));
 bSize:= Byte(sFinds[ipos]) - 1;
 S:= Copy(sFinds, ipos + 4, bSize);
 For i:= 1 to Length(S) do
 if S[i] = #0 then
 S[i]:= #32;

 //Ищем UTF16LE
 ipos:= Pos(#255#254, s);
 if ipos <> 0  then
 begin
 i:= ipos + 2;
 repeat
 SS:= PWideChar(Copy(s, i, 2));
 if (Byte(SS[1]) > 32) and (Byte(SS[1]) < 175) then
 SS:= S[i];
 Result:= Result + SS;
 inc(i, 2);
 until i > Length(s);
 end
 else
 Result:= s;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 f : File;
 sTelo: String;
 SizeFile: integer;
begin

  if OpenDialog1.Execute then
begin
  {$I-}
   AssignFile(f, OpenDialog1.FileName);
   FileMode := fmOpenReadWrite;
   Reset (f, 1);
   {$I+}
   //ошибка открытия файла то выходим
  if IOResult<>0 then
  exit;
  //переходим на нужную позицию
  seek(f, 0);
 SizeFile:= filesize(f);
 if SizeFile > 512 then
 SizeFile:= 512;

 SetLEngth(sTelo, SizeFile);
 BlockRead(f, Pointer(sTelo)^, Length(sTelo));
 Label1.Caption := 'Номер трека: ' + FindTags('TRCK', sTelo);
 Label2.Caption := 'Заголовок: ' +  FindTags('TIT2', sTelo);
 Label3.Caption := 'Исполнитель: ' + FindTags('TPE1', sTelo);
 Label4.Caption := 'Альбом: ' +  FindTags('TALB', sTelo);
 Label5.Caption := 'Жанр: ' +  FindTags('TCON', sTelo);
 Label6.Caption := 'Год: ' + FindTags('TYER', sTelo);
 Label7.Caption := 'Коментарии: ' + FindTags('COMM', sTelo);
 CloseFile(f);
end;
end;

Последний раз редактировалось Aliens_wolfs; 14.04.2017 в 11:45.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с чего начать решение? Считать из файла название объемных геометрических фигур,вывести название,количество граней,рисунок (Delphi) леночка93 Помощь студентам 6 16.05.2013 13:14
Есть ли способ вставлять кнопки в ячейки таблицы? Serhantes Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 27.02.2013 13:54
Есть ли другои способ получения внешнего IP ArtGrek Работа с сетью в Delphi 9 26.02.2011 16:46
WPF пропуск кадров. Есть ли способ предотвратить? Casper-SC Общие вопросы .NET 0 09.06.2010 20:16
Есть ли способ узнать, кто вызвал скрипт? motorway PHP 5 08.07.2009 09:16