Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Seccion PocketStudio (PalmOS) Segunda Entrega (https://www.clubdelphi.com/foros/showthread.php?t=35614)

fredo 15-09-2006 15:17:40

Seccion PocketStudio (PalmOS) Segunda Entrega
 
Hola, hoy doy la segunda entrega....
Manejo de caracteres:

Definicion:
Código Delphi [-]
 var Caracter:array [0..29] of char;


es mas comodo tener una unit en la cual ya esten definidos los largos:

Código Delphi [-]
type String10 = array [0..9] of char;
       String20 = array [0..19] o char;

OJO.... NO ES POSIBLE HACER

Código Delphi [-]
Procedure x;
var caracter = String10;
begin
     {ej 1}
     Caracter:='Hola';
     {ej 2}
     Caracter:=caracter+'Otra cosa' ;
     {ej 3}
     if Caracter = ' Hola' 
     then
     Begin

     end;
end;

Forma de hacerlo:

Código Delphi [-]
Procedure x;
var caracter = String10;
begin
     {ej 1}
     StrCopy(Caracter,'Hola');
     {ej 2}
     StrCat(Caracter,'Otra cosa'); 
     {ej 3}
     if StrCompare('Hola' ,Caracter) = 0
     then
     Begin

     end;
end;

Los tipos Boolean e Enteros se comportan bien

Los tipos enteros admintidos son:
Código Delphi [-]
Int16
Int32
Int64
//...
Segun se necesite.

fredo 15-09-2006 15:36:22

Bases de datos
 
Bueno aqui estoy medio parado, pero si he logrado hacer las cosas que queria, he utilizado los tipos Integer y String, los cuales funcionan, pero el tipo integer es odiable:mad: ...debido a que hay que hacer muchos pasos para poder visualizar un dato de forma correcta, los datos al sincronizar tambien dan ataos...en definitiva solo uso string y limito la digitacion a numeros en las cajas de edicion.... es mas facil y mas rapido, sin por ello ser la mejor opcion:eek: (lo admito es mas que nada de comodidad...:D )

Bueno empecemos.

La unidad de manejo de datos es la PSDataBases. Aunque he tratado de usar los motores que trae disponible palm (PalmBD) no he podido usarlos, al parecer no son compatibles, espero que si hay alguien que sepa que falta por fabor lo postee...

Primero Abrir la base de datos para ello siempre hago una funcio que se encargue de ello para llamarle cuando sea necesario.... vamos al codigo.
Ojo que aqui una base de datos :eek: es una simple tabla......

Código Delphi [-]
{en el encabezado}
const
  FrmMain = AutoID;
  DBEjemplo = 'NombreDB';

function OpenDatabase: Boolean; 


{despues de la etiqueta resource}
var Ejemplos: TDatabase;
      {aqui va la definicion de campos, asumo que se entiende...}
     FieldDefs: array [0..1] of TFieldDef =
  (
    (DataType: ftString), {campo1}
    (DataType: ftString)  {campo2}
  );

function OpenDatabase: Boolean;
Begin
      {chequear existencia de la tabla...}
      if not PSDatabase.DatabaseExists(DBEjemplo)
      then
      Begin
             {crear tabla segun se necesite}
             Result := PSDatabase.CreateDatabase(DBEjemplos,Creator, Rsc('DATA'));
      end;
    {si todo ok entonces abrir}
     if Result
     then
     Begin
            Result := PSDatabase.Open(Ejemplos,DBEjemplos,dmModeReadWrite);
     end;
     {Definir campos}
     if Result then
  Begin
       PSDatabase.SetFieldDefs(Ejemplos,FieldDefs[0], SizeOf(FieldDefs) div SizeOf(FieldDefs[0]));
  end
  else
    ShowSystemError(PSDatabase.LastError);      
end;

Bueno hasta aqui llego hoy hasta el miercoles;)

Ñuño Martínez 18-09-2006 10:06:32

¿No es necesario ningún USES ni nada por el estilo? Supongo que sí, ¿o no? Creo recordar (porque no lo tengo instalado ahora) que con Free Pascal (que también sirve para programar para Palm) sí era necesario.

fredo 18-09-2006 17:50:10

No es necesario....
 
Cita:

¿No es necesario ningún USES ni nada por el estilo? Supongo que sí, ¿o no? Creo recordar (porque no lo tengo instalado ahora) que con Free Pascal (que también sirve para programar para Palm) sí era necesario.
no, no es necesario, gracias por tu comentario ;)

maeyanes 18-09-2006 18:15:56

Yo estuve probando el PocketStudio y hasta donde recuerdo, si es necesaria la cláusula USES para referenciar otras unidades.


Saludos...

fredo 18-09-2006 18:21:22

para otras unidades si para PSDatabase no
 
para otras unidades si para PSDatabase no:)

por cierto si usaste PocketStudio Porias ayudar a mejorar la informacion de este....;) , aun no logro en la sincrinizacion escribir en la DB de la palm desde delphi...

maeyanes 18-09-2006 18:24:01

Pues no fue mucho lo que lo usé... solo hice algunas pruebas y lo dejé... no tenía el tiempo para dedicarle... además, el manejo de las DB se me hizo algo complicado y nunca pude encontrar un buen ejemplo...

Así que temo no poder ampliar la información que ya has dado...



Saludos...

SpyO_O 30-10-2006 12:11:34

Bases de datos en pocket Studio
 
Hola: voy a darles una ayuda con respecto a pocket studio porque veo que se trabaron con el acceso a bases de datos: lo mejor que pueden hacer es escribir una unit como la siguiente:
Unit Multas;
uses PSL;

const

DBName = 'MultaDB'; //Nombre de la base de datos
DBType = Rsc('data'); // DatabaseType de la base de dotos


Const
MultaRN=0;
MultaObjeto=1;
MultaNombre=2;
MultaDireccion=3;
MultaFecha=4;
MultaInspector=5;
MultaObs=6;
MultaStatus=7;
var

FieldDefs: array [0..7] of TFieldDef =
(
(DataType: ftString), //MultaRegistroNumero
(DataType: ftString), //MultaObjeto
(DataType: ftString), //MultaNombre
(DataType: ftString), //MultaDireccion
(DataType: ftDate), //MultaFecha
(DataType: ftInt16), //MultaInspector
(DataType: ftString), //Multa Obs
(DataType: ftString) //Multa Status
);



DBMulta:TDatabase;




function Open : Boolean;
function Close: Boolean;
Implementation

function Open:Boolean;
begin
Result := PSDatabase.Open(DBMulta, DBName, dmModeReadWrite);
if not Result then
Result := PSDatabase.CreateDatabase(DBName, Creator, ClienteDBType);
if Result then
Result := PSDatabase.Open(DBMulta, DBName, dmModeReadWrite);
end;

// Configura la estructura del registro en la base de datos.
PSDatabase.SetFieldDefs(DBMulta, FieldDefs[0],
SizeOf(FieldDefs) div SizeOf(FieldDefs[0]));
end;



function Close : Boolean;
begin
Result := PSDatabase.Close(DBMulta);
end;


end.

Como veran no necesita de muchos comentarios, pues es mas que logico su funcionamiento, la unit PSL(pocket studio library ) es la que encapsula todo el codigo de la base de datos.

Luego para acceder a la base de datos basta con recorrerla con un while:
Procedure Loop;
var
Buffer: Array[0..30] of Char;
begin

Multas.Open;
PSDatabase.First(DBMulta);
while Not PSDatabase.EOF(DBMultaDetalle) do
begin
StrCopy(Buffer,PSdatabase.FieldStringPtr(DBMulta,MultaNombre));
ShowMessage(Buffer);
PsDatabase.Next(DBMultaDetalle);
end;
end;

Luego existen metodos mas vistosos para acceder a la base de datos, como las tablas , algo asi, como los DBGrid en delphi pero muy distinto de ellos.
Saludos


La franja horaria es GMT +2. Ahora son las 13:52:43.

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