Mostrando entradas con la etiqueta texto. Mostrar todas las entradas
Mostrando entradas con la etiqueta texto. Mostrar todas las entradas

lunes, 12 de enero de 2015

Nuestra primera aplicación (1era Parte)

image

Ya viene siendo hora de ponernos a programar. Soy de los que piensa que en la práctica es donde mejor se aprende la teoría por lo que hoy vamos a hacer una pequeña aplicación donde aplicaremos lo visto en artículos anteriores y algunas cosas nuevas. Nuestra primera aplicación lo único que hará es tener un botón que al hacer clic cambie su texto.

Lo primero que haremos es abrir el eclipse. Yo usaré la versión Indigo. Una vez abierto el eclipse crearemos una nueva aplicación para esto vamos a File > New > Android Project nos saldrá un cuadro donde pondremos el nombre de nuestra aplicación. Yo le llamaré Primera App. Luego deberemos seleccionar para qué versión de Android haremos nuestra aplicación. Esta selección es importante pues la versión que seleccionemos significará que será la versión mínima de Android que debe tener la aplicación que crearemos. En estos artículos usaremos la versión 2.2 por ser una de las más usadas.

Después de haber seleccionado la versión, entonces nos tocará seleccionar el nombre del paquete. En nuestro caso pondremos el siguiente: softpei.app. También debemos seleccionar el nombre de nuestra Activity. No hemos explicado qué es un Activity, pues llegó el momento: un Activity no es más que el componente principal de la interfaz gráfica. Viene siendo como la ventana en cualquier lenguaje visual. En nuestro caso seleccionaremos como nombre de nuestro Activity el de PrimeraActivity.

Con esto ya hemos creado los parámetros iniciales de nuestra aplicación. Ahora nos dedicaremos a la parte visual de la aplicación. Como vimos en el artículo Conociendo la estructura de un Proyecto Android, para ver el XML que representará la interfaz visual de nuestra Activity vamos a la carpeta res > layout. Ahí tendremos el fichero main.xml que por defecto tendrá el siguiente código:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />

</LinearLayout>

Aquí podemos ver que por defecto el Layout es linear con una orientación vertical y dentro hay un texto que tiene como valor lo que está en la variable hello.

Nosotros le haremos a esto unos pequeños ajustes, y es que quitaremos ese texto y pondremos un botón; entonces el código quedará así:

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />

Aquí vemos que el texto del botón tiene un valor escrito en el fichero por lo que, como vimos en Los textos en Android es importante poner todos nuestros textos en el fichero strings.xml por lo que vamos a crear una variable en este fichero de nuestra aplicación para asignárselo al texto del botón creado. Nuestro fichero de textos quedaría así:

<resources>

<string name="hello">Hello World, PrimeraActivity!</string>
<string name="app_name">Primera App</string>
<string name="texto_boton">Aceptar</string>

</resources>

Ahora procedemos a modificar el valor del botón por la variable creada, por lo que el main.xml quedará así:

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/texto_boton" />

Bueno ya tenemos la parte visual casi lista. Solo nos quedaría crear también un texto para cuando hagamos clic sobre el botón, para esto creamos otra variable en el fichero strings.xml:

<string name="texto_boton_clickeado">Botón Clickeado</string>
Con esto ya hemos terminado la parte visual, ahora nos quedará la lógica pero esto lo veremos en un próximo articulo.
{ Leer Más }


miércoles, 19 de febrero de 2014

Leer ficheros de texto con Php.

En algunas aplicaciones nos es necesario entrar información al sistema obtenida desde ficheros de texto en lugar de utilizar formularios. Por ejemplo si tenemos facturas de productos vendidos, el proceso sería más rápido si cargamos estos ficheros y procesamos la información que nos interesa en un proceso automático.

En este artículo queremos brindar algunas prácticas interesantes para realizar este procesamiento utilizando las ventajas para el trabajo con ficheros que nos brinda Php.

Por ejemplo utilizando el caso de productos que habíamos mencionado, supongamos que tenemos un fichero en formato txt que tiene la información de una factura, pondremos un caso bien sencillo donde tenemos el número de factura, algunos datos adicionales del emisor y receptor de la factura y una tabla que contiene los detalles de la venta realizada:

En este caso podemos leer el fichero línea a línea e ir realizando las validaciones que nos interesan y recoger la información. Para realizar el procesamiento del fichero e ir sacándonos del programa cuando se encuentre que no cumple algunas reglas de validación podemos usar las sentencias Try-catch y lanzamos el error detectado.

Por ejemplo:

<?php          
try{
if (file_exists("Factura.txt")===FALSE)
throw new Exception('El fichero no existe.');
$text = file_get_contents("Factura.txt");
if ($text === FALSE)
{
throw new Exception('El fichero no puedo ser leído.');
}
$text= mb_convert_encoding($text, 'UTF-8',mb_detect_encoding($text, 'UTF-8, ISO-8859-1', true));
$texts = explode("\n",$text);
echo "Fichero leído correctamente." ;
}
catch (Exception $e)
{
echo 'Excepción capturada: ', $e->getMessage(), "\n";
}
?>

Con la función file_exists verificamos que efectivamente el fichero exista en nuestro directorio, y procedemos a leer el archivo completo como una única cadena con file_get_contents, en caso de fallo esta función devuelve false. Y finalmente en este bloque dividimos esa cadena en líneas, para esto hacemos uso de una función muy interesante para este caso que es la función explode que divide una cadena ($text) por otra (“/n”) en este caso fin de línea y nos devuelve una matriz que contiene las subcadenas contenidas en la cadena $text y separadas por el fin de línea. Ya con esto tenemos en $texts el fichero línea a línea.

Para las primeras cuatro líneas hacemos un procesamiento similar en todos los casos, siempre debe leerse una etiqueta determinada y después la información asociada a esta etiqueta:

$invoice_no = trim($texts[0]);
$invoice_no = explode("Factura No.",$invoice_no);
if(count($invoice_no)!=2)
throw new ErrorException('La etiqueta "Factura No." no existe o está escrita incorrectamente');
$invoice_no = trim($invoice_no[0]);

Siempre es interesante utilizar la función trim para eliminar los espacios en blanco (u otros caracteres) del principio y final de la cadena. Siempre verificamos en estos caso que la cantidad de elementos contenidos en la matriz $invoice_no después de aplicar explode no puede ser diferente de 2, porque si la información viene correctamente en la posición 1 vamos a obtener la que nos interesa.

Lo que sigue es leer la información de la tabla de productos, para eso primeramente verificamos que los datos de la cabecera sean correctos, comparándolo con un arreglo que previamente tenemos y después en un ciclo recorremos los productos hasta llegar al fin de la tabla, asumimos que terminamos la lectura de la tabla cuando llegamos a encontrar la cadena “Total:” que es lo que sigue detrás de la misma.

$cabecera = array('Cantidad','Nombre','Precio Unitario', 'Descuento', 'Importe');
$cabecera_tabla = trim($texts[5]);
$cabecera_tabla = explode("\t",$cabecera_tabla);
$result= array_diff($cabecera_tabla,$cabecera);
if(!empty($result))
throw new ErrorException("Los datos de la cabecera de la tabla de productos están escritos incorrectamente");

$datos = array();
$tabla = true;
$no_producto = 0;
$j= 6;
while ($tabla==TRUE)
{
//Verificar si se terminó la tabla
$end = strpos($texts[$j], 'Total:');
if($end === FALSE)
{
$detalle = explode("\t",trim($texts[$j]));
$datos[$no_producto]->CANTIDAD = $detalle[0];
$datos[$no_producto]->NOMBRE = $detalle[1];
$datos[$no_producto]->PRECIOUNITARIO = $detalle[2];
$datos[$no_producto]->DESCUENTO = $detalle[3];
$datos[$no_producto]->IMPORTE = $detalle[4];
$no_producto++;
$j++;
}
else
{
//termino la tabla
$tabla = false;
}
}

La función strpos devuelve la posición numérica de la primera aparición de una cadena, si necesitáramos la cadena en sí utilizáramos strstr aunque esta última es más lenta y consume más memoria. Si no queremos distinguir entre mayúsculas y minúsculas podemos utilizar stripos y stristr.

Es todo, espero haya sido de utilidad.

{ Leer Más }


IconIconIcon