Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2009
Maria85 Maria85 is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Maria85 Va por buen camino
Abrir archivo Delphi

Hola otra vez a todos!!

Estoy intentando crear un método que pulsando en un botón me abra un archivo...Me sale el diálogo de abrir bien, pero cuando selecciono uno y le doy a aceptar me sale el siguiente error:

Object reference is not set to an instance object

Si alguien pudiera decirme algo...
Os pongo aqui abajo el método:

Código Delphi [-]
 
 
procedure TTFormMain.OpcionAbrir(Sender: TObject);
var
  nombreArchivo: string;
  i: integer;
  ficheroAbierto: integer;
begin
  ficheroAbierto:=0;
  if DialogoAbrir.Execute then
    begin
        inc(numeroPestana);
        for i:=0 to numeroPestana-1 do
          begin
                if (numeroPestana<>0) and
                    (compareText(DialogoAbrir.FileName,listaVentanas[i].pestana.hint)=0) then
                  begin
                    nombreArchivo:='EL FICHERO: '+DialogoAbrir.FileName+' YA ESTA ABIERTO';
                      ShowMessage(nombreArchivo);
                    dec(numeroPestana);
                    ficheroAbierto:=1;
                  end;
          end;

       if ficheroAbierto=0 then
         begin
                AbrirEditor(DialogoAbrir.FileName);
                listaVentanas[numeroPestana].editor.Lines.LoadFromFile(DialogoAbrir.FileName);
                listaVentanas[numeroPestana].guardado := true;
                listaVentanas[numeroPestana].carpetaTrabajo := DialogoAbrir.FileName;
                nombreArchivo := ObtenerNombrePestana(listaVentanas[numeroPestana].carpetaTrabajo);
                delete(listaVentanas[numeroPestana].carpetaTrabajo,
                       pos(nombreArchivo,listaVentanas[numeroPestana].carpetaTrabajo),
                       length(listaVentanas[numeroPestana].carpetaTrabajo));
         end;
    end;
end;
Responder Con Cita
  #2  
Antiguo 28-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Has ejecutado paso a paso?
¿Podrías decirnos en qué línea te está fallando?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 28-01-2009
Maria85 Maria85 is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Maria85 Va por buen camino
El problema es que soy nueva en Delphi...lo he ejecutado entero y compila bien. Solo me da el error cuando le doy a abrir...pero una vez ejecutado el programa...
Responder Con Cita
  #4  
Antiguo 28-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Maria85 Ver Mensaje
El problema es que soy nueva en Delphi...lo he ejecutado entero y compila bien. Solo me da el error cuando le doy a abrir...pero una vez ejecutado el programa...
OK. No hay problema.
Desde el editor, colocate en la línea:

Código Delphi [-]
if DialogoAbrir.Execute then

Y pulsa F5. verás que en esa línea se coloca un BreakPoint (la marca roja sobre la línea).



Ahora ejecuta el programa y cuando llegue a ese punto se parará y te indicará con una flecha verde la línea actual que se está ejecutando.



Y vas pulsando F8 se irá ejecutando el programa "paso a paso" hasta que llegues a la línea que falla. De esta forma puedes saber con más detalle en qué lugar está fallando.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 28-01-2009
Maria85 Maria85 is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Maria85 Va por buen camino
Vale, se me para cuando llega a la linea:

inc(numeroPestana);

asi que supongo que tendrá que ser que no obtengo bien el numero de pestaña o algo así.seguiré investigando...

gracias por ayudarme
Responder Con Cita
  #6  
Antiguo 28-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Como tienes definida esa variable?
Prueba con:

Código Delphi [-]
  num := num + 1;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 28-01-2009
Maria85 Maria85 is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Maria85 Va por buen camino
He descubierto porque me fallaba, no era lo de inc(num) que te he dicho antes. Te escribo el código para que lo veas. La parte que he comentado es la que me fallaba( que se refiere a que si el fichero está abierto no me lo vuelve a abrir). Asi que por lo menos ahora me lo abre aunque sea siempre. Ahora tengo que arrglar esa parte para que me funcione.

Código Delphi [-]
 
procedure TTFormMain.OpcionAbrir(Sender: TObject);
var
  nombreArchivo: string;
  i: integer;
  ficheroAbierto: integer;
begin
  ficheroAbierto:=0;
  if DialogoAbrir.Execute then
    begin
        inc(numeroPestana);
        for i:=0 to numeroPestana-1 do
              {
          begin
                if (numeroPestana<>0) and
                    (compareText(DialogoAbrir.FileName,listaVentanas[i].pestana.hint)=0) then
                  begin
                    nombreArchivo:='EL FICHERO: '+DialogoAbrir.FileName+' YA ESTA ABIERTO';
                      ShowMessage(nombreArchivo);
                    numeroPestana:=numeroPestana-1;
                    ficheroAbierto:=1;
                  end;
          end;
               }
       if ficheroAbierto=0 then
         begin
                AbrirEditor(DialogoAbrir.FileName);
                listaVentanas[numeroPestana].editor.Lines.LoadFromFile(DialogoAbrir.FileName);
                listaVentanas[numeroPestana].guardado := true;
                listaVentanas[numeroPestana].carpetaTrabajo := DialogoAbrir.FileName;
                nombreArchivo := ObtenerNombrePestana(listaVentanas[numeroPestana].carpetaTrabajo);
                delete(listaVentanas[numeroPestana].carpetaTrabajo,
                       pos(nombreArchivo,listaVentanas[numeroPestana].carpetaTrabajo),
                       length(listaVentanas[numeroPestana].carpetaTrabajo));
         end;
    end;
end;
Responder Con Cita
  #8  
Antiguo 28-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La línea que veo con más posibilidades (de fallar ) es la del CompareText, pero lo mismo de antes. Ejecuta paso a paso a ver si afinas la línea.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 28-01-2009
Maria85 Maria85 is offline
Miembro
 
Registrado: ene 2009
Posts: 15
Poder: 0
Maria85 Va por buen camino
si es esa, la de compareText...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como abrir un archivo .MEM desde Delphi? vicvil Tablas planas 3 31-10-2006 17:29:40
como abrir un archivo de video dentro de un componente de delphi rls Varios 2 17-11-2005 05:33:45
Abrir un archivo de autocad desde Delphi camelumi Varios 6 15-07-2004 22:33:23
Abrir un archivo HRPT en Delphi 7 dvduc Gráficos 0 13-07-2004 18:18:58
se me cierra delphi al abrir un archivo .pas soyhugo Varios 2 09-02-2004 17:42:13


La franja horaria es GMT +2. Ahora son las 18:22:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi