Ir al contenido


Foto

Problemas de conversiones (Lo de siempre) ^o|


  • Por favor identifícate para responder
4 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 05 julio 2009 - 04:04

Pues eso, usando el code de busqueda de archivos recursivos de este post, estoy haciendo una especie de Jukebox con XML, aquí­ en este caso en vez de agregarlo en un listbox lo agrego en un DBGrid, pero al correr el procedimiento Process me ocurre este error:

---------------------------
Debugger Exception Notification
---------------------------
Project Jukebox.exe raised exception class EConvertError with message ''' is not a valid integer value'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------


Anexo una imagne donde marca el error, el código es el siguiente:



delphi
  1. procedure TForm1.Process(Path: string; const Mask: string);
  2. var sr: TSearchRec;
  3.     Artista, Album, Titulo, Ruta, Ano, Calidad, Genero, Comentario: String;
  4. begin
  5. Path := Path + PathDelim;
  6. if FindFirst(Path + '*.*', faAnyFile, sr) = 0 then
  7.   begin
  8.   repeat
  9.     if (sr.Attr and faDirectory) <> 0 then
  10.     if (sr.Name <> '.') and (sr.Name <> '..') then
  11.       Process(Path + sr.Name, Mask)
  12.     else
  13.     else
  14.     if Pos(ExtractFileExt(sr.Name) + '.', '.' + Mask + '.') > 1 then
  15.       ObtenerID3Tag(sr.Name,Titulo,Artista,Album,Ano,Genero,Comentario);
  16.       Ruta := Path + sr.Name;
  17.     if cdsCanciones.Active = False then
  18.       begin
  19.         cdsCanciones.Open;
  20.       end;
  21.       cdsCanciones.Last;
  22.       cdsCanciones.Insert;
  23.       cdsCanciones.FieldByName('ID').Value        := NULL;
  24.       cdsCanciones.FieldByName('Artista').AsString := Artista;
  25.       cdsCanciones.FieldByName('Titulo').AsString  := Titulo;
  26.       cdsCanciones.FieldByName('Album').AsString  := Album;
  27.       cdsCanciones.FieldByName('Genero').AsString  := Genero;
  28.       cdsCanciones.FieldByName('Ano').AsInteger    := StrToInt(Ano);
  29.       cdsCanciones.FieldByName('Calidad').AsInteger:= StrToInt(Calidad);
  30.       cdsCanciones.FieldByName('Ruta').AsString    := Ruta;
  31.       cdsCanciones.Post;
  32.   until FindNext(sr) <> 0;
  33.   FindClose(sr);
  34.   end;
  35. end;



El procedimiento ObtenerID3Tag es éste:



delphi
  1. procedure ObtenerID3Tag(mp3File: string; Title,Artist,Album,Year,Genre,Comment: String);
  2. var ID3 : TID3Rec;
  3.     fmp3: TFileStream;
  4. begin
  5.   fmp3:=TFileStream.Create(mp3File, fmOpenRead);
  6.   try
  7.     fmp3.position:=fmp3.size-128;
  8.     fmp3.Read(ID3,SizeOf(ID3));
  9.   finally
  10.     fmp3.free;
  11.   end;
  12.  
  13. if ID3.Tag <> 'TAG' then begin
  14.   Title :='';
  15.   Artist :='';
  16.   Album :='';
  17.   Year :='';
  18.   Genre :='';
  19.   Comment :='';
  20. end else begin
  21.   Title := ID3.Titulo;
  22.   Artist := ID3.Artista;
  23.   Album := ID3.Album;
  24.   Year := ID3.Ano;
  25.   if ID3.Genero in [0..MaxID3Genre] then
  26.     Genre := PCHar(Genre[ID3.Genero])
  27.   else
  28.     Genre := IntToStr(ID3.Genero);
  29.   Comment :=ID3.Comentario;
  30. end;
  31. end;



¿Donde puede ser el problema?  :(.

Saludos.

  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 05 julio 2009 - 06:31

Gracias a Eduarcol he cambiado estas dos lí­neas:



delphi
  1.       cdsCanciones.FieldByName('Ano').AsInteger    := StrToInt(Ano);
  2.       cdsCanciones.FieldByName('Calidad').AsInteger:= StrToInt(Calidad);



por estas dos:



delphi
  1.       cdsCanciones.FieldByName('Ano').AsInteger    := StrToIntDef(Album,0);
  2.       cdsCanciones.FieldByName('Calidad').AsInteger := StrToIntDef(Calidad,0);



Con eso se corrigió el problema de la conversión.

Saludos.
  • 0

#3 RaCerLokO

RaCerLokO

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationMexico

Escrito 08 julio 2009 - 04:47

wow demasiado nivel para mi, podrian explicarmelo?
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 08 julio 2009 - 07:17

Las canciones en MP3 traen informacion insertada dentro del archivo, esto segun el formato ID2 o ID3.

El programa basicamente lo que hace es sacar esta información del archivo y mostrarla en pantalla.  Por ejemplo el reproductor de windows en un archivo te muestra el nombre de la cancion, el autor y ese tipo de cosas lo toma precisamente de ahi.
  • 0

#5 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 758 mensajes
  • LocationPinar del Río, Cuba

Escrito 24 julio 2009 - 01:03

Hola enecumene
Por lo que veo en tus post, estas haciendo "una especie de Jukebox", para musica

Yo trate de hacer uno tambien, pero que incluyera las pelí­culas y videos, pero como me puse un poco vago, desisti y comence a usar el Where is it!
Pero veo que el tuyo es mas especí­fico y no tan abarcador como el Where is it!

Permitame hacerte una solicitud, que le agregues a tu Jukebox, los formatos de video tambien, y cuando lo termines si no te causa problemas lo compartas.  (a)  :angel: :$

Si necesitas cooperación puedo dartela, en lo que este a mi alcance.

  • 0