Foros Néfele 4 Harbour › Foros › Dudas › Error en runtime
- Este debate tiene 12 respuestas, 5 mensajes y ha sido actualizado por última vez el 4 años, 1 mes por Daniel. This post has been viewed 621 times
-
AutorEntradas
-
-
07-10-2020 a las 01:10 #1028DanielParticipante
Estoy haciendo mi primera aplicación y voy con lo básico del wizard
Persolanicé el footer, compilé y anda todo bien.
Pongo una wRebar con un wSideNav copiando y pegando el de nefele_samples, dejando solamente un item en el menu ( :AddItem("Inicio","Inicio","home", xc_SideNavOption))
Luego agrego el método "Inicio" en el main (en TCgi) compilo sin errores y
Finalmente ejecuto apareciendo este error:
El siguiente error ha ocurrido: Argument error
LEN
BASE 1111
Arguments: [ 1] = Tipo: U Valor: NIL
Error code: 0
Llamado desde LEN(0)
Llamado desde WREBAR:CREATE(72) <-------------- esta linea en el codigo fuente es una linea cometada
Llamado desde APPMENU(105)
Llamado desde MAINPAGE(20)
Llamado desde (b)TCGI(33)
Llamado desde TCGI:MAINFUNCTION(0)
Llamado desde __OBJSENDMSG(0)
Llamado desde TCGI:RUN(1243)
Llamado desde CGI_INIT(22)
Llamado desde MAIN(16) <--------------------------- esta linea en el código fuente es una inea en blancoHice decenas de pruebas para ver dónde realmente se da el error, comentando lineas y/o bloques enteros y no consigo encontrar el problema.
Este trozo de código en nefele_samples no da error, pero en mi prueba si.
¿Alguna idea de que puedo estar haciendo mal?
Desde ya muchas gracias.
Daniel
-
07-10-2020 a las 02:27 #1029Gabriel OrnelasParticipante
Daniel al igual que tu estamos empezando este es mi codigo que de igual manera son pegados de los ejemplos
123456789101112131415161718192021222324252627282930313233343536373839404142434445// Comenzamos instanciando la Página Web que queremos crearWith Object TWebPage():New():lValign:= .T.:lContainer:= .T.:lFooter:= .T. // Incluir Footer estandar de Materialize 0.1 por defecto .T.:aLinks := {} // Lista de Links en el Footer Estandar, es un array de arays {cURL,cText} 0.1:cTitleFooter:= "":cClrFootText:= 'white' // Color del Titulo del Footer 0.1:cClrFootPane:= 'amber' // Color del fondo del Footer 0.1:cSubTitle := ""// :cCopyright := "":cTitle := "Cafe Selecto, Carta Digital (c)":cBackground := "images/cafe_selecto480.jpg":cBackgroundSize := "cover":lBackgroundRepeat := .F.:cBackgroundColor := "transparent":cBodyBackgroundColor:= "radial-gradient(#0000001f, #ffffff)":cShadowSheetTitle := "Un Momento..":cShadowSheetSubTitle:= ""AppMenu(:WO)WITH OBJECT WBevel():New(:WO)// Por cuestiones esteticas vamos a poner un wSeparator puede tener una Linea horizontalWITH OBJECT WSeparator():New(:WO):lLine := .T.:lBR := .T.:Create()END WITH//Un botón para ver como ejecutar un action y llamar a una nueva WebPageWith Object WButton():New(:WO):cId := "BtnLineas":cText := "Conoce nuestra carta":cOnClick := "Lineas" // Method de nuestro CGI que se ejecuta al pulsar en el boton:cIcon := "apps" // Icono a mostrar ver lista en https://materializecss.com/icons.html:lLarge := .T. // Grande:lPulse := .T. // Destella:nfix := "100%":lShadowSheet := .T.:cClrPane := "deep-orange lighten-2":cTextAlign := xc_Center:Create()End With:Create()END WITHoCGI:SendPage( :Create() )End WithY la funcion donde pone wRebar
12345678910111213141516171819202122232425262728293031323334353637383940//------------------------------------------------------------------------------PROCEDURE AppMenu(oParent, cTitle, lBack)DEFAULT cTitle TO "Café Selecto, H. Cárdenas Tabasco, México"DEFAULT lBack TO .F.with object WRebar():New(oParent):cClrPane := "amber accent-4":lBeforeMain := .T.:lMenuNav := .F.:lBlock := .T.:cTitle := cTitle:cClrTitle := "black":cTitleAlign := xc_CenterIF lBackWITH OBJECT WButton():New( :WO):cId := "back_lineas":cText := "":cIcon := "reply":lBack := .T.:lFloating:= .T.:lContainer:= .F.:cIconAlign:= xc_Center:cPosition:= xc_Right:lCenter := .F.:cClrPane := "deep-orange accent-3"WITH OBJECT :oStyle:cposition:= "absolute":cright := "0px":ctop := "0px":cmargin_top := "13px":cmargin_bottom := "15px":cmargin_right := "25px":cmargin_left := "15px"END WITH:Create()END WITHENDIF:Create()end withRETURNEspero y te pueda dar una luz
Saludos!
-
07-10-2020 a las 14:43 #1032DanielParticipante
Gabriel,
Muchas gracias por compartir tu código, lo he revisado y salvo un #define que yo tengo, el resto está bastante parecido, propiedad mas propiedad menos.
Saludos
Daniel
-
07-10-2020 a las 15:02 #1033DanielParticipante
Gabriel,
Una consulta, ¿como hiciste para "pegar" tu código y que quede dentro de un cuadrado bien formateado y coloreado?
Muchas gracias
Saludos
Daniel
-
-
07-10-2020 a las 11:23 #1031Alfredo SanzSuperadministrador
Daniel, necesito ver el código de la función AppMenu y el código donde llamas a esta función. Me parece que te está faltando algo.
-
07-10-2020 a las 15:05 #1034DanielParticipante
Alfredo,
Gracias por tu ayuda.
Este es mi código,
//Función principal de la app Web
PROCEDURE MainPage()// Comenzamos instanciando la Página Web que queremos crear
With Object TWebPage():New()
// Para no tener que estar repitiendo código, la construcción del wRebar y del wSideNav lo tengo en un PROCEDURE
// que puedo llamar desde todo el proyecto
AppMenu( :WO )
:lValign := .T.
// :cIcon := "MacroSistemas"
:cTitle := "VirtualMenú"
:cTitleFooter := "MacroVentas ®"
:cSubTitle := "Sistema de punto de venta y gestión"
:cCopyright := '© VirtualMenú By MacroSistemas'
:cClrCrText := "blue"
:cClrFootPane := "black"// Dentro de la web montamos un primer contenedor bEvel que ocupa 4/12 anchura en pantallas grandes
// en una mediana o pequeña se adaptará responsivamente ya que no le damos tamaño
With Object WBevel():New(:WO)
:aWidth[xc_L] := 4With Object WLabel():New(:WO)
:nFontSize := 5
:lBold := .T.
:cAlign := xc_Center
:lBR := .T.
:cText := "Hola Mundo"
:Create()
End With
:Create()
End WithoCgi:SendPage( :Create() ) // Se crea el HTML final y se envía al navegador saliendo del ejecutable CGI
End With
RETURN
//------------------------------------------------------------------------------
// Aquí contruyo el wRebar y el wSideNav, al estar en un PROCEDURE aparte puedo crearlos dentro de cualquiera de
// las tWebPage del proyecto
// Necesito tWebPage donde he de crearlos, asi que se lo paso como parametro en oParent
PROCEDURE AppMenu(oParent, cTitle)
local cRestaurante#ifdef POPEYE
cRestaurante := 'Restaurante Popei'
cTitle := 'Restaurante Popei'
#endif POPEYE// Instanciamos el wSideNav (El menú lateral)
with object WSideNav():New(oParent)
// Como todas las propiedades image de Néfele podemos asiganerle una URL, un path de nuestro Apache o un BASE64
:cBackImage := "/images/Velero.jpeg"
:cId := "Menu"
:cTitle := cRestaurante
:cClrTiTle := "white"
:cText := "Menú"
:cClrText := "white"
:lShadow := .T. // Esta sombra afecta a los cText y a cTitle y se utiliza para que resalten sobre la imagen del fondo
// vamos a añadirle opciones a nuesto menú
// AddItem( cText, cFunction, cIcon, nStyle, aParams, cAction, aBadge {cText,cClass} )
:AddItem("Inicio","Inicio","home", xc_SideNavOption)
// :AddItem("Formularios","MainForms","note_add", xc_SideNavOption)
// :AddItem("Listas","MainListViews","contacts", xc_SideNavOption,,,"Novedad")
// :AddItem("Alertas","MainAlert","highlight", xc_SideNavOption,,,{"Novedad","red pulse"})
// :AddItem("Charts","MainCharts","data_usage", xc_SideNavOption,,,{"Novedad","blue pulse"})
// Como siempre, una vez definidas todas la propiedades procedemos a la creación
:Create()
end with// Vamos con el wRebar
with object WRebar():New(oParent)
// Por defecto el wRebar esta creado para estar dividido en 3 areas, MenuNav, Titulo y Logo
// Podemos no poner cualquiera de los tres elementos, e incluso podemos utilizar el wRebar como un contenedor
// y crear dentro de el otros controles.
:cClrPane := "blue darken-1"
:lBeforeMain := .T. // Forzamos a que el wRebar este fuera del <main>
:lMenuNav := .T. // Lleva el icono de apertuta del wSideNav
:lBlock := .T. // Se queda fijo en la parte alta aunque se produzca un scroll
:cTitle := cTitle
:cTitleAlign := xc_Center // Podemos colocar el MenuNav, el Titulo y el Logo en cualquira de las tres posiciones left, center y right
:cLogo := "/images/MacroSistemas.jpg"
:cLogoAlign := xc_Right
// :cUrlToGo := "https://nefele.dev" // Cuando picamos en el Logo nos lleva a esta URL
:Create()
end withRETURN
//------------------------------------------------------------------------------
-
-
07-10-2020 a las 15:37 #1035DanielParticipante
Resuelto,
De todas las pruebas que hice ayer faltó esta:
Comenté las lineas que tiene #ifdef y #endif y ahora anda bien.
Gracias a todos.
Saludos
Daniel
-
07-10-2020 a las 20:59 #1039Alfredo SanzSuperadministrador
Ok. Ya veo.
Es porque :cTitle no se puede dejar a Nil y si no está definido POPEYE, cRestaurante es Nil
Tomo nota para corregirlo en la próxima versión.
- Esta respuesta fue modificada 4 años, 1 mes por Alfredo Sanz.
-
-
07-10-2020 a las 19:55 #1036juan.novedadesParticipante
Hola Daniel también soy nuevo en este foro pero para mostrar el código dentro de un cuadro lo que tienes que hacer (bueno a mi me funciono jejeje) es que en la edición del mensaje a publicar en la parte superior derecha están las opciones visual y HTML, te vas a HTML y te muestra una barra de herramientas como cabecera, te vas a "CRAYON" pegas tu código y listo!, espero ser correcto en la explicación. Saludos Cordiales.
-
07-10-2020 a las 21:01 #1040DanielParticipante
Probando pegar codigo
12345678910Class TCgi FROM XCgi// Este es nuestro Router para evitar inyección de código malicioso y aportar la máxima seguridad.// Solo se permite la llamada a los Method de oCgi aquí nombrados que a su vez llaman a Procedure, Function o Method'sMETHOD MainFunction() INLINE MainPage()METHOD Inicio() INLINE MainPage()* METHOD OtraMas() Inline OtraMas() //Y así tantas como queramosEND CLASS
-
-
07-10-2020 a las 21:02 #1041DanielParticipante
Gracia Juan,
Fucionó perfecto.
Saludos
Daniel
-
07-10-2020 a las 21:31 #1043Pedro AmaroSuperadministrador
Como te cometa Fredy el error te lo da porque la propiedad cTitle de wRebar es Nil, ya esta corregido en la próxima versión para que no de error.
-
08-10-2020 a las 14:47 #1045DanielParticipante
Lo que me sucedió es que estoy acostumbrado a crear .ch donde pongo solamente "defines" sin valor a los efectos de que se compile o no, partes del código, según personalizaciones que hago de acuerdo al cliente
En particular en este caso, el .ch solo tiene (por ahora) un linea:
1#define POPEYEMuchas gracias a todos por la ayuda.
Daniel
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.