Amigos del foro, estoy probando Delphi XE6 y trabajando con una aplicacion para leer el idtag de los archivos de mp3. En DElhi5 y Windows XP me funcionaba a la perfeccion, pero al querer hacerlo en Delphi XE6 y Windows 7, no logro hacerlo funcionar.
Con el siguiente codigo tendria que poder grabar los datos en el archivo, pero no logro hacerlo.
Código Delphi
[-]
FTagRecord: ID3Struct;
const
ID3Magic = 'TAG';
ID3Struct = packed record
Magic: Array [0..2 ] of ansiChar;
Title: Array [0..29] of ansiChar;
Artist: Array [0..29] of ansiChar;
Album: Array [0..29] of ansiChar;
Year: Array [0..3] of ansiChar;
Comment: Array [0..29] of ansiChar;
Genre: ID3Genre;
end;
FillChar(FTagRecord, SizeOf(FTagRecord), ' ');
with FTagRecord do
begin
StrMove(Magic, ID3Magic, SizeOf(Magic));
s := PadSpace(FTitle, SizeOf(Title));
StrMove(Title, pansiChar(s), Length(s));
s := PadSpace(FArtist, SizeOf(Artist));
StrMove(Artist, pansiChar(s), Length(s));
s := PadSpace(FAlbum, SizeOf(Album));
StrMove(Album, pansiChar(s), Length(s));
s := PadSpace(FYear, SizeOf(Year));
StrMove(Year, pansiChar(s), Length(s));
s := PadSpace(FComment, SizeOf(Comment));
StrMove(Comment, pansiChar(s), Length(s));
Genre := ID3NameToGenre(FGenre);
end;
hFile := createfile(pchar(FFileName), GENERIC_WRITE or GENERIC_READ , FILE_SHARE_WRITE+FILE_SHARE_READ,nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL , 0);
SetFilePointer(hFile,GETFILESIZE(hFile,nil)-SizeOf(FTagRecord), NIL, FILE_BEGIN);
if sysutils.FileWrite(hFile, FTagRecord, SizeOf(FTagRecord))=-1 then
showmessage('Atención! No se pudo grabar la información.');
Closehandle(hFile);