• Jueves 25 de Abril de 2024, 01:14

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - GatoSoft

Páginas: [1]
1
Pascal / Como Obtener El Pidl De Una Carpeta
« en: Sábado 1 de Abril de 2006, 23:21 »
Hola Quisiera saber como abrir una carpeta (CUALQUIERA) por código.

He encontrado muchos trucos que nos muestran como abrir las carpetas especiales o virtuales de Windows, (a través del PIDL), pero no he encontrado como abrir una carpeta cualquiera de mi equipo.


Les agradezco

2
Delphi / Re: Yo Otravez Con Una Pregunta Sobre Tmemo
« en: Miércoles 2 de Junio de 2004, 15:21 »
Hola, aqui esta un ejemplo, es mas o menos parecido a la solucion anterior que te di con los listbox.
Pero BlackTigerX tiene razón, Si lo que estas hacienod es un evaluador de expresiones, te va a tocar mucho trabajo, pero si lo que quieres es un corrector sintactico, no es tan complicado, aunque no deja de ocupar bastante de tu tiempo y lineas de codigo.

Código: Text
  1.  
  2. Procedure Verificar_Numeros(pExpresion:String);
  3. var i:Integer;
  4.     vestoy_leyendo_numero:Boolean;
  5.     vError_con_decimal:Boolean;
  6.     vCaracter:Char;
  7.     vNumero_str:String;
  8. Begin
  9.    vError_con_decimal:=false;
  10.    vestoy_leyendo_numero:=false;
  11.    for i:=1 to length(pExpresion) do
  12.      begin
  13.      vCaracter:=pExpresion[i];
  14.      case vCaracter of
  15.      '0'..'9','.':begin
  16.                   vestoy_leyendo_numero:=True;
  17.                   if vCaracter='.' then
  18.                      if POS('.',vNumero_str)>0 then
  19.                         vError_con_decimal:=True;
  20.                   vNumero_str:=vNumero_str+vCaracter;
  21.                   end;
  22.      else
  23.          begin
  24.            if vestoy_leyendo_numero then
  25.            begin
  26.              form1.Memo1.Lines.Add('Numero: '+vNumero_str);
  27.              //Haces lo que nececites hacer con el numero, otras validaciones, por ejemplo
  28.              if vError_con_decimal then
  29.                 begin
  30.                 form1.Memo1.Lines.Add('Hay mas de un punto decimal en el numero: '+vNumero_str);
  31.                 vError_con_decimal:=False;
  32.                 end;
  33.              vestoy_leyendo_numero:=false;
  34.              vNumero_str:='';
  35.            end;
  36.          end;
  37.      end; //Case
  38.      end;//for
  39.  
  40.  
  41.            if vestoy_leyendo_numero then
  42.            begin
  43.              form1.Memo1.Lines.Add('Numero: '+vNumero_str);
  44.              //Haces lo que nececites hacer con el numero, otras validaciones, por ejemplo
  45.              if vError_con_decimal then
  46.                 begin
  47.                 form1.Memo1.Lines.Add('Hay mas de un punto decimal en el numero: '+vNumero_str);
  48.                 vError_con_decimal:=False;
  49.                 end;
  50.              vestoy_leyendo_numero:=false;
  51.              vNumero_str:='';
  52.            end;
  53.  
  54. end;
  55.  
  56. procedure TForm1.Button1Click(Sender: TObject);
  57. begin
  58. verificar_Parentesis(edit1.text);
  59. Verificar_signos(edit1.text);
  60. Verificar_Numeros(edit1.text);
  61. end;
  62.  
  63.  

3
Delphi / Re: Otra Pregunta Sobre Listboxs
« en: Miércoles 2 de Junio de 2004, 14:48 »
Con respecto a tu otra inquietud, ¿como enviar el contenido de dos listbox a otro?

Podria ser: Recorriendo la fuente de datos y enviar elelemto por elemento al listbox

Código: Text
  1.  
  2.  
  3. //Por ejemplo, tomando los datos de un Memo
  4.  
  5. for i:=1 to memo1.Lines.Count-1 do
  6.    ListBox1.Items.Add(memo1.Lines[i]);
  7.  
  8.  
  9. //Por ejemplo, tomando los datos de un listbox
  10.  
  11. for i:=1 to Listbox2.Items.Count-1 do
  12.    ListBox1.Items.Add(Listbox2..items[i]);
  13.  
  14.  
  15.  


Otro forma, es utilizando el método assign, que copia el contenido del objeto en otro.

Código: Text
  1.  
  2.   ListBox2.Items.Assign(ListBox1.Items);
  3.  
  4.  

No sería igual hacer:
Código: Text
  1.  
  2. Listbox2.items:=Listbox1.items;
  3.  
  4.  

Por que estarías creando una referencia  entre dos objetos y no copiando los datos.

4
Delphi / Re: Otra Pregunta Sobre Listboxs
« en: Miércoles 2 de Junio de 2004, 14:39 »
Hola althenna, aqui te doy un fragmento de codigo que te puede servir como guia.

Código: Text
  1.  
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. var vNumero_str:string;
  4.     vestoy_leyendo_numero:Boolean;
  5.     vCaracter: Char;
  6.     vCadena:String;
  7.     i:Integer;
  8. begin
  9. vCadena:=Edit1.Text;
  10. vNumero_str:='';
  11. vestoy_leyendo_numero:=false;
  12.  
  13. for i:=1 to length(vCadena) do
  14.   begin
  15.     vCaracter:=vCadena[i];
  16.     case vCaracter of
  17.     '0'..'9':begin
  18.              vestoy_leyendo_numero:=True;
  19.               vNumero_str:=vNumero_str+vCaracter;
  20.              end;
  21.     else
  22.          if vEstoy_leyendo_numero then
  23.             begin
  24.               Memo1.Lines.Add(vNumero_str);
  25.               vestoy_leyendo_numero:=False;
  26.               vNumero_str:='';
  27.             end;
  28.     end; //Case
  29.   end;//For
  30.  
  31. { antes de terminar, hace una última verificacion por si el último fragmento de la cadena de texto es un numero}
  32.  
  33.   if vEstoy_leyendo_numero then
  34.       begin
  35.          Memo1.Lines.Add(vNumero_str);
  36.          vestoy_leyendo_numero:=False;
  37.          vNumero_str:='';
  38.       end;
  39.  
  40. end;
  41.  
  42.  

5
Pascal / Re: Necesito Ayuda Urgente Con Programa Pascal
« en: Miércoles 19 de Mayo de 2004, 01:04 »
No entendi mucho el enunciado TarroMan, si me lo das mas molidito, te podria ayudar en algo....

Esto es lo que he capatdo:

1. Te dan un archivo que contiene las tripletas con su respectivo aminocacido. Hay que leerlos y cargarlos en una tabla.... bueno, supongo que será en memoria.

2. leer un fichero especificado con una secuencia de ADN.... como se supone que viene dada esta?
   un renglon con algo asi como: CTTTCTCGA.... hasta que limite?
perdona mi ignorancia pero no se... habla de 20 aminoacidos... entonces sería algo asi como 20 tripletas en una sola linea..?

3. Sacar por pantalla los genes que hay en la secuencia? De que consta un gen?  como se Que es un GEN? cuantos aminoacidos? donde corta? etc.

¿Que quiere decir con: "En la secuencia de nucleotidos no habra dos BGN sin que por medio este un stp"....?

¿que es lo que dice sobre las mutaciones?

6
Delphi / Re: Capturar Las Tablas De Una Base De Datos
« en: Viernes 16 de Abril de 2004, 06:59 »
Hola Dyanna... me alegra saber que eres paisana...

Tus pretenciones son grandes..! Es un poco complicado pero creo qeu tiene solución, el problema es que no soy muy experto en esto.


Resulta que hay una serie de componentes que se llaman ADO... Manejan la interface de conexión multiporposito de Microsoft.

El componente central es el TADOConnection, con este haces un enlace con cualquier motor de bases de datos. los conocidos como MS server u Oracle, tienen una implementacion especial, los demas pueden ser manejados a través del OBDC.

El caso es que con este componente, una vez hayas hecho la conección, puedes llamar funciones como:

get_tableNames
get_fieldNames
get_procedureNames
OpenSchema -->Muestra la estructura de una tabla

Como te digo no tengo mucho conocimiento en esto... pero puedes empezar por investigar mas sobre ADO y hacer tus pruebas de conexxión..

Un saludo.

7
Delphi / Re: Tclientdataset
« en: Viernes 16 de Abril de 2004, 06:38 »
Hola Dyanna...

Bueno, creo que estas equivocada al quere asignar el nombre de la tabla  a la propiedad providername del clientdataset....

En esta propiedad debe ir el nombre del TDataSetProvider... este componente esta en la misma paleta donde encuentras el TClienDataset.


el TDatasetProvider es el que conecta a tu TClientDataset, con cualquier otro componente de tipo Dataset (Query, Table, IBQuery, IBTable, etc)..

MyDatasetProvider.dataset:=TTable1;
MyClientDataset.ProviderName:='MyMyDatasetProvider';

Siempre funcionan los tres... la ventaja de esto es que cuando la TTable se abre, pasa los datos al ClientDataset (o a memoria) y se cierra inmediatamente, dejando las cosas en manos del ClientDataset.


Espero haberte ayudado...

Un saludo

8
Delphi / Re: Sistema Operativo
« en: Miércoles 14 de Abril de 2004, 05:41 »
Pues primero que todo les recomiendo a todos bajarse el Trucomania  Explorer.. en www.q3.nu. Este software, tiene una coleccion de trucos que puedes actualizar por red u off-line... de alli saque la solucion a este problema, asi:

Truco No 479

==================
 
procedure TForm1.Button1Click(Sender: TObject);
 
  const
    cOsUnknown : Integer = -1;
    cOsWin95 : Integer = 0;
    cOsWin98 : Integer = 1;
    cOsWin98SE : Integer = 2;
    cOsWinME : Integer = 3;
    cOsWinNT : Integer = 4;
    cOsWin2000 : Integer = 5;
    cOsWhistler : Integer = 6;
 
 
  function GetOSVersion : Integer;
  var
    osVerInfo : TOSVersionInfo;
    majorVer, minorVer : Integer;
  begin
    Result := cOsUnknown;
    osVerInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );
 
    if ( GetVersionEx( osVerInfo ) ) then
    begin
      majorVer := osVerInfo.dwMajorVersion;
      minorVer := osVerInfo.dwMinorVersion;
 
      case ( osVerInfo.dwPlatformId ) of
 
        VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
        begin
          if ( majorVer <= 4 ) then Result := cOsWinNT
          else
          if ( ( majorVer = 5 ) and ( minorVer= 0 ) ) then Result := cOsWin2000
          else
          if ( ( majorVer = 5) and ( minorVer = 1 ) ) then Result := cOsWhistler
          else
          Result := cOsUnknown;
        end;
 
        VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }
        begin
          if ( ( majorVer = 4 ) and ( minorVer = 0 ) ) then Result := cOsWin95
 
          else
          if ( ( majorVer = 4 ) and ( minorVer = 10 ) ) then
          begin
            if ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) then Result := cOsWin98SE
 
            else Result := cOsWin98;
           end
         else
          if ( ( majorVer = 4) and ( minorVer = 90 ) ) then Result := cOsWinME
 
          else Result := cOsUnknown;
        end;
 
      else
        Result := cOsUnknown;
      end; { Final del Case}
    end else Result := cOsUnknown; {Final del if}
  end;
 
 
  function GetOSName( OSCode : Integer ) : String;
  begin
    if ( OSCode = cOsUnknown ) then
      Result := '(sconosciuto)'
    else if ( OSCode = cOsWin95 ) then
      Result := 'Microsoft Windows 95'
    else if ( OSCode = cOsWin98 ) then
      Result := 'Microsoft Windows 98'
    else if ( OSCode = cOsWin98SE ) then
      Result := 'Microsoft Windows 98 Second Edition'
    else if ( OSCode = cOsWinME ) then
      Result := 'Microsoft Windows Millennium Edition'
    else if ( OSCode = cOsWinNT ) then
      Result := 'Microsoft Windows New Technology'
    else if ( OSCode = cOsWin2000 ) then
      Result := 'Microsoft Windows 2000 / NT 5'
    else
      Result := 'Microsoft Windows';
  end;
 
 
begin
  Caption:=GetOsName ( GetOSVersion );
end;
==============================

Otra Version:


==============
procedure TForm1.Button1Click(Sender: TObject);
 
  const
    cOsUnknown : Integer = -1;
    cOsWin95 : Integer = 0;
    cOsWin98 : Integer = 1;
    cOsWin98SE : Integer = 2;
    cOsWinME : Integer = 3;
    cOsWinNT : Integer = 4;
    cOsWin2000 : Integer = 5;
    cOsWinXP : Integer = 6;
 
 
  function GetOSVersion : Integer;
  var
    osVerInfo : TOSVersionInfo;
    majorVer, minorVer : Integer;
  begin
    osVerInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );
 
    if ( GetVersionEx( osVerInfo ) ) then
    begin
      majorVer := osVerInfo.dwMajorVersion;
      minorVer := osVerInfo.dwMinorVersion;
 
      case ( osVerInfo.dwPlatformId ) of
 
        VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
        begin
          if ( majorVer <= 4 ) then Result := cOsWinNT
          else
          if ( ( majorVer = 5 ) and ( minorVer= 0 ) ) then Result := cOsWin2000
          else
          if ( ( majorVer = 5) and ( minorVer = 1 ) ) then Result := cOsWinXP
          else
          Result := cOsUnknown;
        end;
 
        VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }
        begin
          if ( ( majorVer = 4 ) and ( minorVer = 0 ) ) then Result := cOsWin95
 
          else
          if ( ( majorVer = 4 ) and ( minorVer = 10 ) ) then
          begin
            if ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) then Result := cOsWin98SE
 
            else Result := cOsWin98;
           end
         else
          if ( ( majorVer = 4) and ( minorVer = 90 ) ) then Result := cOsWinME
 
          else Result := cOsUnknown;
        end;
 
      else
        Result := cOsUnknown;
      end; { Final del Case}
    end else Result := cOsUnknown; {Final del if}
  end;
 
 
  function GetOSName( OSCode : Integer ) : String;
  begin
    if ( OSCode = cOsUnknown ) then
      Result := '(sconosciuto)'
    else if ( OSCode = cOsWin95 ) then
      Result := 'Microsoft Windows 95'
    else if ( OSCode = cOsWin98 ) then
      Result := 'Microsoft Windows 98'
    else if ( OSCode = cOsWin98SE ) then
      Result := 'Microsoft Windows 98 Second Edition'
    else if ( OSCode = cOsWinME ) then
      Result := 'Microsoft Windows Millennium Edition'
    else if ( OSCode = cOsWinNT ) then
      Result := 'Microsoft Windows New Technology'
    else if ( OSCode = cOsWin2000 ) then
      Result := 'Microsoft Windows 2000 / NT 5'
    else if ( OSCode = cOsWinXP ) then
      Result := 'Microsoft Windows XP'
    else
      Result := 'Microsoft Windows';
  end;
 
 
begin
  Caption:=GetOsName ( GetOSVersion );
end;
===================================

9
Delphi / Re: Insertar Registros Desde Otra Base Dato?
« en: Martes 13 de Abril de 2004, 05:54 »
Bueno, por lo general este tipo de migraciones se hacen con componentes de base de datos asi:

tus tablas *.DB, las accesas con componetes TTable o Tquery de la paleta BDE y las tablas de la base de datos interbase las accesas con componetes de la paleta interbase IBtable o IBQuery

Pues lo que debes hacer es:

1. Cargar los datos de la tabla que vas a migrar en el TTable..

Table1.databaename='.\paises.db';
table1.open;

While not table1.eof do //Mientras no sea el fin de la tabla...
  begin

  IBQuery.close;
  IBQuery.sql.text:='Insert into paises(pais, capital) values(:ppais, :pcapital)'
  IBQuery1.parambyname('ppais').value:=Table1.fieldbyname('pais').value;
  IBQuery1.parambyname('pcapital').value:=Table1.fieldbyname('capital').value;
  IBQuery1.ExecSQL;

  table1.next; //se pasa al siguiente registro.
  end;


Es decir... debes recorrer la tabla original he ir insertando en la tabla destino, a través de los componetes...

10
Delphi / Re: Una Ayudita
« en: Martes 13 de Abril de 2004, 05:45 »
Podrias probar utilizando la función Trunc(), que recibe como parametro un valor real y devuelve el valor truncado, o sea sin decimales... y lo utilizarias de la siguiente manera:

vResultado:=Variable1 / Variable2;

if Trunc(vResultado)=vResultado then
   Showmessage('Es entero')
else
  Showmessage('No Es entero');


el truco esta en preguntar si el numero truncado es igual al numero sin truncar... si es asi es por que el numero es un entero...

Prueba si te funciona..

Un saludo...

11
Delphi / Re: Capturar Las Tablas De Una Base De Datos
« en: Martes 13 de Abril de 2004, 05:38 »
Hola dyanna.. bueno, un mtor de base de datos que se respete tiene por lo general dentro de cada base de datos que creas unas tablas llamadas "del sistema". En ellas se guarda diferente tipo de información, entre las cuales puedes encontrar las tablas del sistema, los campos de una tabla... los tipos de datos de cada campo, las fuinciones y triggers que maneja, etc.

si especificas que motor estas utilizando tal vez sea mas facil ayudarte. En Interbase, po ejemplo las tablas del sistema estan precedidas por: RDB$ y seguido el nombre de la tabla del sistema. en PostgreSQL, estan precedidas por un PG_

Sin embargo, si estas utilizando algun componete, puedes tener acceso a cietas funciones que hacen el trabajo mas facil, por ejem`plo en Interbase, el componente IBDatabase tiene una funcion llamada: get_tablenames() que acepta como parametro de entrada una Tlist donde devuelve el resultado y un valor booleano con el que le dices si desea que tambien te devuelva las tablas del sistema.


Espero que te haya servido de algo mi aporte,

Un saludo.

12
Diseño de Algoritmos / Re: Kreando Un IAbot
« en: Domingo 11 de Abril de 2004, 06:06 »
Bueno... pero a cuantos y a quienes te refieres cuando dices "estamos"...¿ya hay alguna base?.... en que lenguaje?

13
Delphi / Re: Manejo De Archivos
« en: Domingo 11 de Abril de 2004, 05:57 »
Si el manejo de archivos es identico, no varia en nada, sin embargo, hay un par de funciones que se cambiaron par no entorpecer la funcionalidad o las semejanzas con lo que se tenia de objetos:

Por ejemlpo: Assign, se cambio por AssignFile, por que assign esta reservado para trabajar con Objetos.

de igual forma Close, se cambio por closefile....

Páginas: [1]