Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 2
Ir a la página Anterior  1, 2
 
Abrir Archivo De Texto Plano
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: Abrir Archivo De Texto Plano 
 
[quote user="marcosg" post="6844"]
shordi escribió: [Ver mensaje]
Vamos a ver. Si haces doble click sobre un archivo en el escritorio, el sistema operativo tiene que saber qué programa predeterminado a de invocar para pasarle la referencia del archivo. El problema es que gambas genera pcode interpretado, no código máquina.
No puedes, pues, desplegar las propiedades del archivo de texto y decirle que te lo abra con notepad, por cuanto notepad no es uno ejecutable, sino que a su vez ha de ser abierto por dbx2, que es el intérprete de gambas.
La solución es hacer un shell script que abra gbx2 y le pase como parámetro el ficheo tecleado. El sistema operativo será quien se encargue, al hacer doble click de pasar a su vez el archivo de texto al shell script.
Algo así como:

#!/bin/bash

#!/usr/bin/bash

gbx2 "notepad.gambas $1"

 


No lo he probado, pero debería funcionar.

Suerte

 



 
marcosg - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Abrir Archivo De Texto Plano 
 
No es una limitación de gambas (gambas es muy bueno       )

Yo creo que te falta algo de código dentro de tu  aplicación (notepad.gambas) que lea esa "variable de entorno" osea el "nombre del archivo" que le pasas con "$1"
Mira en mi programa aacftp, leia un argumento:

PUBLIC SUB Main() 'evento que recibe los parámetros
DIM argumento AS String
' ejemplo que recorre el array de argumentos
FOR EACH argumento IN Application.Args
  '  PRINT argumento
NEXT
var.ruta = User.home & "/.cuentas.aacftp"
var.archivotrabajo = "~/datos.actualizador"
IF argumento <> "auto" THEN
  'se ejecuta normalmente
  FMain.show
  ELSE
  'se realiza todo el trabajo automaticamente....
  var.ArgumentoProg = "auto"
  IF Exist(var.archivotrabajo) THEN
    KILL var.archivotrabajo
   ENDIF
  fichero.cargacuentas()
  gestionFtp.todos
   ENDIF
 END


La parte que te interesa es esta:
FOR EACH argumento IN Application.Args
 '  PRINT argumento
NEXT


"argumento" contendría la ruta del archivo que vas a abrir.

En tu aplicación, habrá una subrutina que abra el archivo que has escogido, le tienes que pasar la variable "argumento", para que te lo abra.

Creo que la solución va a ir por ese camino....


Saludos...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Abrir Archivo De Texto Plano 
 
jsbsan escribió: [Ver mensaje]
No es una limitación de gambas (gambas es muy bueno       )

Yo creo que te falta algo de código dentro de tu  aplicación (notepad.gambas) que lea esa "variable de entorno" osea el "nombre del archivo" que le pasas con "$1"
Mira en mi programa aacftp, leia un argumento:

PUBLIC SUB Main() 'evento que recibe los parámetros
DIM argumento AS String
' ejemplo que recorre el array de argumentos
FOR EACH argumento IN Application.Args
  '  PRINT argumento
NEXT
var.ruta = User.home & "/.cuentas.aacftp"
var.archivotrabajo = "~/datos.actualizador"
IF argumento <> "auto" THEN
  'se ejecuta normalmente
  FMain.show
  ELSE
  'se realiza todo el trabajo automaticamente....
  var.ArgumentoProg = "auto"
  IF Exist(var.archivotrabajo) THEN
    KILL var.archivotrabajo
   ENDIF
  fichero.cargacuentas()
  gestionFtp.todos
   ENDIF
 END


La parte que te interesa es esta:
FOR EACH argumento IN Application.Args
 '  PRINT argumento
NEXT


"argumento" contendría la ruta del archivo que vas a abrir.

En tu aplicación, habrá una subrutina que abra el archivo que has escogido, le tienes que pasar la variable "argumento", para que te lo abra.

Creo que la solución va a ir por ese camino....


Saludos...


En este caso tendría que tener el notepad abierto y abrir el archivo de texto para poder incluir la ruta.
En este caso no se conoce la ruta del archivo ya que puede estar en cualquier directorio o una usb.
El codigo del notepad es el de ejemplo que trae gambas. Este es el código.

' gambas class file

PRIVATE $sPath AS String
PRIVATE $bModify AS Boolean

STATIC PUBLIC SUB Main()

  DIM hForm AS Form

  hForm = NEW FNotepad
  hForm.Show

END


PUBLIC SUB _new()

  txtNotepad.Text = ""
  $bModify = FALSE
  RefreshTitle
  txtNotePad.SetFocus

END


PRIVATE FUNCTION GetName() AS String

  IF $sPath THEN RETURN $sPath

  RETURN "(New document)"

END


PRIVATE SUB RefreshTitle()

  DIM sTitle AS String

  IF $bModify THEN sTitle = "*"
  sTitle = sTitle & GetName()

  ME.Title = sTitle

END


PRIVATE SUB SetPath(sPath AS String)

  $sPath = sPath
  RefreshTitle

END

PRIVATE SUB SetModify(bModify AS Boolean)

  IF $bModify = bModify THEN RETURN
  $bModify = bModify
  RefreshTitle

END


PRIVATE FUNCTION CloseDoc() AS Boolean

  IF $bModify THEN
    SELECT CASE Message.Question(GetName() & "\n\nFile has been modified. Do you want to save it ?", "Yes", "No", "Cancel")
      CASE 1
        Save
      CASE 3
        RETURN TRUE
    END SELECT
  ENDIF

  $sPath = ""
  txtNotepad.Text = ""
  $bModify = FALSE
  RefreshTitle

END



PUBLIC SUB Load(sPath AS String)

  DIM sData AS String

  IF CloseDoc() THEN RETURN

  sData = File.Load(sPath)
  txtNotepad.Text = Conv(sData, System.Charset, Desktop.Charset)
  $bModify = FALSE
  SetPath(sPath)

CATCH

  Message.Error(sPath & "\nUnable to load file.\n" & Error.Text)

END


PUBLIC SUB Save(OPTIONAL bSaveAs AS Boolean)
  
  IF bSaveAs OR NOT $sPath THEN
    IF Dialog.SaveFile() THEN RETURN
    SetPath(Dialog.Path)
  ENDIF
  
  File.Save($sPath, txtNotepad.Text)
  
END


PUBLIC SUB mnuOpen_Click()
  
  DIM sPath AS String

  Dialog.Filter = ["*", "All files", "*.{c;cpp;h}", "C/C++ files", "*.txt", "Text files", "*.desktop", "Desktop files"]

  IF Dialog.OpenFile() THEN RETURN
  Load(Dialog.Path)
  
END


PUBLIC SUB mnuSave_Click()
  
  Save
  
END


PUBLIC SUB mnuSaveAs_Click()
  
  Save(TRUE)
  
END


PUBLIC SUB mnuQuit_Click()
  
  ME.Close
  
END


PUBLIC SUB txtNotepad_Change()
  
  SetModify(TRUE)
  
END


PUBLIC SUB mnuClose_Click()
  
  CloseDoc
  
END


PUBLIC SUB Form_Close()
  
  IF CloseDoc() THEN STOP EVENT
  
END


PUBLIC SUB mnuAbout_Click()

  INC Application.Busy
  FAbout.Run
  DEC Application.Busy
  
END


PUBLIC SUB mnuCopy_Click()
  
  txtNotepad.Copy
  
END


PUBLIC SUB mnuPaste_Click()
  
  txtNotepad.Paste
  
END


PUBLIC SUB mnuCut_Click()
  
  txtNotepad.Cut
  
END


PUBLIC SUB mnuUndo_Click()
  
  txtNotepad.Undo
  
END


PUBLIC SUB mnuRedo_Click()
  
  txtNotepad.Redo
  
END


PUBLIC SUB mnuFont_Click()
  
  Dialog.Font = txtNotepad.Font
  IF Dialog.SelectFont() THEN RETURN
  txtNotepad.Font = Dialog.Font
  
END

PUBLIC SUB mnuWrap_Click()

  mnuWrap.Checked = NOT mnuWrap.Checked
  txtNotePad.Wrap = mnuWrap.Checked

END

PUBLIC SUB Form_Open()

  

END
 



 
marcosg - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Abrir Archivo De Texto Plano 
 
Marcosg:
Creo que tienes un error de concepto con el Application.Args. Cuando tú das doble click a cualquier cosa, el sistema invoca el nombre del programa que tiene predefinido para abrir ese tipo de archivo y le pasa como argumento la referencia del fichero que debe abrir.
Por tanto el programa llamado debe ser capaz de recibir ese argumento y procesarlo. En la práctica es exactamente como si se invocase en un terminal tu programa seguido de la referencia del fichero: "notepad /home/marcosg/mifichero.txt"

La herramienta que gambas te da para recibir ese argumento es, precisamente el Application.Args. Es un array que contiene como elemento 0 el nombre de la aplicacion (en este caso la cadena "notepad" y como resto de elementos tantas cadenas separadas por espacios como hayas tecleado en la línea de comandos (en este caso sólo habría un elemento Application.Args[1] que sería la cadena "/home/marcosg/mifichero.txt"

El momento en que puedes consultar qué argumentos se pasaron dentro de tu código es cualquiera pero, dada la naturaleza de tu programa, lo correcto sería en el evento Form_open del formulario principal (evento que precisamente tienes vacío).

Prueba a poner algo así (no he mirado tu código en profundidad, o sea, que si me dejo algo o me equivoco disculpa):


PUBLIC SUB Form_Open()
  IF Application.Args.Count > 1 then
      load (Application.Args[1])
  ENDIF
END
 


Suerte
 




===================
No podemos regresar
 
última edición por shordi el Jueves, 09 Diciembre 2010, 19:22; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Abrir Archivo De Texto Plano 
 
Eurekaaaaaaaaa..

shordi esa es la solución.

Mil gracias por su gentil y oportuno aporte.

Este foro me anima a continuar usando GAMBAS2

Algunos archivos planos no muestran el contenido pero es por el asunto de la codificación. Pero el tema central considero que está RESULETO.

Mil gracias, nuevamente
 



 
marcosg - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Mysql Y Archivo De Texto Plano jhonnshark General 3 Martes, 04 Octobre 2011, 16:03 Ver último mensaje
jguardon
No hay nuevos mensajes Ayuda A Principiante Con Uso De Texto Plan... gambi General 3 Miercoles, 05 Octobre 2011, 03:54 Ver último mensaje
ivanovichenco
No hay nuevos mensajes Abrir Y Leer Un Archivo De Texto Ubicado ... victoria General 2 Sabado, 19 May 2012, 20:53 Ver último mensaje
victoria
No hay nuevos mensajes Quitar Salida De Colores A Texto Plano. jsbsan General 3 Domingo, 28 May 2017, 09:41 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 2 de 2
Ir a la página Anterior  1, 2

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron