Ir al contenido


Foto

Problemas con MIDAS.DLL


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

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 09 julio 2009 - 06:09

Pues eso (No sé si el tema viene aquí­ :$), estoy teniendo problemas con el tema de MIDAS, estoy usando ClientDataSet, XMLTransformProvider y XML y estoy usando el buscador propuesto por ChackAll en este post, pero al ejecutarlo me da el siguiente error:

---------------------------
Debugger Exception Notification
---------------------------
Project Jukebox.exe raised exception class EAccessViolation with message 'Access violation at address 4DB1C078 in module 'Midas.dll'. Read of address 00000346'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help 
---------------------------


Los únicos cambios que he hecho es agregar estos codes:



delphi
  1. {*** Evento OnMouseDown del Grid ***}
  2. procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  3.   Shift: TShiftState; X, Y: Integer);
  4. begin
  5.   if Button = mbRight then
  6.     begin
  7.       if cdsCanciones.IsEmpty then
  8.         begin
  9.           Borrardelabiblioteca1.Enabled := False;
  10.           Borrardelsistema1.Enabled    := False;
  11.           ocarCancin1.Enabled          := False;
  12.           AgregaralalistadeReproduccin1.Enabled := False;
  13.         end else begin
  14.           Borrardelabiblioteca1.Enabled := True;
  15.           Borrardelsistema1.Enabled    := True;
  16.           ocarCancin1.Enabled          := True;
  17.           AgregaralalistadeReproduccin1.Enabled := True;
  18.         end; // Segundo if
  19.     end; // Primer if
  20. end;
  21.  
  22. {*** Evento OnClick de un Item de un Menú PopUp asociado al Grid ***}
  23. procedure TForm1.Borrardelabiblioteca1Click(Sender: TObject);
  24. begin
  25. if cdsCanciones.IsEmpty then
  26.   begin
  27.     //No hacemos nada aquí­
  28.   end else begin
  29.   //de lo contrario lo borramos de la biblioteca
  30.     cdsCanciones.Delete;
  31.     cdsCanciones.ApplyUpdates(-1);
  32.   end;
  33. end;



Saludos.


  • 0

#2 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 10 julio 2009 - 07:51

Hola,
¿no podrí­as colocar esta parte así­?:



delphi
  1. procedure TForm1.Borrardelabiblioteca1Click(Sender: TObject);
  2. begin
  3. if not (cdsCanciones.IsEmpty) then
  4.   begin
  5.     cdsCanciones.Delete;
  6.     cdsCanciones.ApplyUpdates(-1);
  7.   end;
  8. end;



Ahora, tu estas validando que el ClientDataSet no este vacio antes de eliminar, ¿pero como esta validando que este seleccionado algun registro?.

Saludos!
  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 10 julio 2009 - 04:55

Gracias amigo, eso es para evitar que el usuario intente eliminar datos no existentes (en el caso de que no exista datos), pero veo que el problema no viene de ahí­, pues eliminé esos codes y el error aún sigue. :(

Saludos.
  • 0

#4 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 10 julio 2009 - 05:03

Gracias amigo, eso es para evitar que el usuario intente eliminar datos no existentes (en el caso de que no exista datos), pero veo que el problema no viene de ahí­, pues eliminé esos codes y el error aún sigue. :(

Saludos.


La verdad es que al MIDAS cuando le da por joder te pone a dar vueltas con tu código  :D

Probablemente no tiene que ser a causa de lo que estes haciendo, puedes intentar con algo tan simple como reiniciar tu equipo, o en otros casos hasta cambiar los componentes... ma ha pasado  :@

Otra cosa amigo, ¿compilas la dll con tu aplicación?

Saludos!
  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 10 julio 2009 - 05:15

Otra cosa amigo, ¿compilas la dll con tu aplicación?


¿Te refieres incluyendo la dll en el directorio de la aplicación?.

Bueno, ya vi de donde viene el problema y es que cuando el XML no tiene data obtengo ese error y si tiene al menos 1 registro el proceso corre sin problemas hasta que se termina y vuelve aparece el error pero luego de correr la aplicación de nuevo ya no presenta el error, ¿a qué se deberá ese problema?  *-)

Saludos.
  • 0

#6 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 10 julio 2009 - 05:20


Otra cosa amigo, ¿compilas la dll con tu aplicación?


¿Te refieres incluyendo la dll en el directorio de la aplicación?.


Si en el uses añadiendo el MidasLib, esto con el fin de no tener que "trastear" con ella cada que instales la aplicacion.

Bueno, ya vi de donde viene el problema y es que cuando el XML no tiene data obtengo ese error y si tiene al menos 1 registro el proceso corre sin problemas hasta que se termina y vuelve aparece el error pero luego de correr la aplicación de nuevo ya no presenta el error, ¿a qué se deberá ese problema?  *-)

Saludos.


¿Eso en el segundo procedure no?... por eso en un principio te pregunte que como validabas que no estuviera vacio, el error te da porque no se puede eliminar un dato que no existe.
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 10 julio 2009 - 05:26

No amigo, estoy compilando el proyecto sin esos codes o procedimientos, me refiero que al compilar por primera vez cuando el XML tiene datos y que cuando termina de llenarse aparece el error, pero al compilar por segunda vez el error ya no aparece.

Saludos.
  • 0

#8 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 11 julio 2009 - 09:38

No amigo, estoy compilando el proyecto sin esos codes o procedimientos, me refiero que al compilar por primera vez cuando el XML tiene datos y que cuando termina de llenarse aparece el error, pero al compilar por segunda vez el error ya no aparece.

Saludos.


Ah ya, ahora entiendo  :p

¿Te pasa solo desde Delphi o tambien te saca error el ejecutable solo?
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 11 julio 2009 - 09:58

Fí­jate, Ya generé el ejecutable, lo ejecuté sólo sin el delphi el error me aparece luego de terminar de rellenarse, pero, cierro el ejecutable y vuelvo a ejecutarlo sólo y ya no me aparece, ese es un comportamiento extraño :s.

Saludos.
  • 0

#10 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 11 julio 2009 - 10:00

Fí­jate, Ya generé el ejecutable, lo ejecuté sólo sin el delphi el error me aparece luego de terminar de rellenarse, pero, cierro el ejecutable y vuelvo a ejecutarlo sólo y ya no me aparece, ese es un comportamiento extraño :s.

Saludos.


¿Podrí­as enseñarnos ese código que rellena amigo?, a ver si le encontramos el chiste  :D

Saludos!
  • 0

#11 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 11 julio 2009 - 10:03



delphi
  1. procedure Process(lpFileName: PChar);
  2. var
  3.   Titulo,Artista,Album,Ano,Genero,Comentario,Calidad: String;
  4. begin
  5.   with Form1 do
  6.   begin
  7.   ObtenerID3Tag(lpFileName,Titulo,Artista,Album,Ano,Genero,Comentario,Calidad);
  8.     if cdsCanciones.Active = False then
  9.       cdsCanciones.Open;
  10.     {*** registramos en el XML ***}
  11.       cdsCanciones.Append;
  12.       cdsCanciones.FieldByName('ID').AsInteger      := cdsCanciones.RecordCount + 1;
  13.       cdsCanciones.FieldByName('Artista').AsString  := Artista;
  14.       if Titulo <> '' then
  15.       cdsCanciones.FieldByName('Titulo').AsString  := Titulo
  16.       else
  17.       cdsCanciones.FieldByName('Titulo').AsString  := ExtractFileName(lpFileName);
  18.  
  19.       cdsCanciones.FieldByName('Album').AsString    := Ano;
  20.       cdsCanciones.FieldByName('Genero').AsString  := Genero;
  21.       cdsCanciones.FieldByName('Ano').AsInteger    := StrToIntDef(Album,0);
  22.       cdsCanciones.FieldByName('Calidad').AsInteger := StrToIntDef(Calidad,0);
  23.       cdsCanciones.FieldByName('Ruta').AsString    := lpFileName;
  24.       cdsCanciones.Post;
  25.   end;
  26. end;


  • 0

#12 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 11 julio 2009 - 10:37

Pues a simple vista no se ve nada causante de tal problema, solo me causó curiosidad el Append al principio.
Tal vez sea un error al cargar de principio la dll, no podria respaldar eso, pero podrias probar con lo de añadirla al uses.

Saludos!
  • 0

#13 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 11 julio 2009 - 10:42

Vaya, efectivamente hasta el momento eso resolvió el problema, lo extraño es que al principio no ocurrí­a eso sino de un momento a otro, bueno de todos modos espero no tener que tratar con más sorpresas (qué ingenuo soy :p), gracias amigo ;).

Saludos.
  • 0

#14 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 11 julio 2009 - 10:52

Vale tranquilo, aqui en lo que podamos  :D... además como te decí­a, cuando midas jode, jode!!  :p

Saludos!
  • 0




IP.Board spam blocked by CleanTalk.