Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por CelestronFan
Lo de Cardinal lo pregunto pues no entiendo porque la declaración "String" el IDE me lo pone en negritas y "Cardinal" no.
Bueno. Si te fijas el editor de Delphi tampoco pone en negrita otros tipos, como "integer", por ejemplo. No sé si podrás jugar un poco en las opciones del editor: Tools -> Editor options. Creo que tendrás que acostumbrarte. Pero, puedo equivocarme.


Cita:
Empezado por CelestronFan
Desearía que si pongo "esmivariable", Delphi me lo cambie en forma automática a "EsMiVarible" que es como la declaré. Esto no es posible, ¿No?
Hasta donde yo llego no es posible. En Delphi se suele usar "por convenio" la notación que, precisamente, se llama "Pascal" (o estoy confundido, pero creo que se llama así mismo), la cual consiste en escribir los nombres de las variables en minúsculas, y, si tienen varias palabras, las siguientes a la primera en mayúsculas. Mejor con un ejemplo:

Código Delphi [-]
 var
   unaVariable: integer;
   otraNuevaVariable: string;
   variable: integer;
Pero, en fin, efectivamente, en Delphi (Object Pascal) no se distinge entre mayúsculas y minúsculas y creo que habrás de ser tú el que se discipline para escribir los nombres de las variables, por ejemplo, según cierta norma que tú mismo puedes imponerte. Empero, en este Hilo se trata un poco el tema y en este otro también, por si quieres echarlos un vistazo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 11-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por CelestronFan
El código es este (Eliminé la parte de "Type" para que no fuera tan largo)
Inclúyelo (todo), aunque sea en un archivo adjunto, porque de otro modo no va a compilar y no va a poderse probar del todo correctamente. Faltan algunos "end;", por ejemplo, tras los "finally", pero, ya te digo, adjunta el código fuente y a ver qué puede hacerse (luego tú puedes comparar).
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 11-10-2005
CelestronFan CelestronFan is offline
Miembro
 
Registrado: oct 2005
Posts: 14
Poder: 0
CelestronFan Va por buen camino
Ok Dec, aquí va todo el código. No hay nada más. Esta es la forma:




Código Delphi [-]
 unit NGFS;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ComCtrls, ExtCtrls, CPortCtl, CPort, Registry;
 
 type
     TForm1 = class(TForm)
     BIn: TButton;
     BOut: TButton;
     GroupBox1: TGroupBox;
     LCurrPos: TLabel;
     Label2: TLabel;
     Label3: TLabel;
     Label4: TLabel;
     Label5: TLabel;
     Label6: TLabel;
     BGoto: TButton;
     LTotStep: TLabel;
     BCali: TButton;
     PBCurrPos: TProgressBar;
     Timer1: TTimer;
     ComComboBox1: TComComboBox;
     ComPort1: TComPort;
     ComLed1: TComLed;
     Eminstep: TEdit;
     Emaxstep: TEdit;
     Label1: TLabel;
     Eminstop: TEdit;
     Label7: TLabel;
     Emaxstop: TEdit;
     BConnect: TButton;
     EGoto: TEdit;
 
   private
     { Private declarations }
    RegNGFS: TRegistry;
   public
     { Public declarations }
      procedure ReadRegistry(MaxSteps: Integer; MinSteps: Integer;
                       StopOUT: Integer; StopIN: Integer; COMPort: String);
     procedure WriteRegistry( );
 
   end;
 
 var
   Form1: TForm1;
   MaxSteps: Cardinal;   //Número máximo de pasos del Stepper
   MinSteps: Cardinal;   //Número mínimo de pasos del Stepper
   StopOUT: Cardinal;    //Posición de parada sentido OUT del Stepper
   StopIN: Cardinal;     //Posición de parada sentido IN del Stepper
   COMPort: String;      //Puerto Serial seleccionado
 
 implementation
 
 {$R *.dfm}
 
 procedure ReadRegistry(MaxSteps: Integer; MinSteps: Integer;
                        StopOUT: Integer; StopIN: Integer; COMPort: String);
 
 //Procedimiento para leer el registro//
 
 begin
       try
         RegNGFS:= TRegistry.Create;
         RegNGFS.RootKey := HKEY_LOCAL_MACHINE;
           if RegNGFS.OpenKey('SOFTWARE\NGFS', FALSE) then begin
           RegNGFS.ReadCardinal('MaxSteps');
           MinSteps:= RegNGFS.ReadCardinal('MinSteps');
           StopOUT:= RegNGFS.ReadCardinal('StopOUT');
           StopIN:= RegNGFS.ReadCardinal('StopIN');
           COMPort:= RegNGFS.ReadString('COMPort');
           end;
       finally
   RegNGFS.Free;
 end;
 
 procedure WriteRegistry( );
 
 //Procedimiento para escribir el registro//
 
 begin
      try
       RegNGFS:= TRegistry.Create;
       RegNGFS.RootKey := HKEY_LOCAL_MACHINE;
          if RegNGFS.OpenKey('SOFTWARE\NGFS', TRUE) then begin
          RegNGFS.WriteCardinal('MaxSteps', MaxSteps);
          RegNGFS.WriteCardinal('MinSteps', MinSteps);
          RegNGFS.WriteCardinal('StopOUT', StopOUT);
          RegNGFS.WriteCardinal('StopIN', StopIN);
          RegNGFS.WriteString('COMPort', COMPort);
          end;
      finally
   RegNGFS.Free;
 end;
 end.
Responder Con Cita
  #4  
Antiguo 11-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hombre, con "la forma" me refería al archivo "dfm", que acompaña al "pas" y es donde se guardan los datos relativos a "la forma"... ¡has puesto un archivo "GIF"! Vamos, que así no se puede compilar...

Creo que faltaba únicamente lo que refiere roman más arriba y lo que también yo he dicho: el que los métodos sean eso, métodos pertenecientes al formulario y no simples procedimientos; y los "end;" cerrando los bloques "finally". Así me ha quedado, pero, insisto, no he podido compilarlo, puesto que no se cuenta con el archivo "dfm" asociado...

Código Delphi [-]
unit NGFS;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ComCtrls, ExtCtrls, CPortCtl, CPort, Registry;
 
 type
   TForm1 = class(TForm)
     BIn: TButton;
     BOut: TButton;
     GroupBox1: TGroupBox;
     LCurrPos: TLabel;
     Label2: TLabel;
     Label3: TLabel;
     Label4: TLabel;
     Label5: TLabel;
     Label6: TLabel;
     BGoto: TButton;
     LTotStep: TLabel;
     BCali: TButton;
     PBCurrPos: TProgressBar;
     Timer1: TTimer;
     ComComboBox1: TComComboBox;
     ComPort1: TComPort;
     ComLed1: TComLed;
     Eminstep: TEdit;
     Emaxstep: TEdit;
     Label1: TLabel;
     Eminstop: TEdit;
     Label7: TLabel;
     Emaxstop: TEdit;
     BConnect: TButton;
     EGoto: TEdit;
   private
     { Private declarations }
     RegNGFS: TRegistry;
   public
     { Public declarations }
     procedure ReadRegistry(MaxSteps: Integer; MinSteps: Integer;
       StopOUT: Integer; StopIN: Integer; COMPort: String);
     procedure WriteRegistry;
   end;
 
 var
   Form1: TForm1;
   MaxSteps: Cardinal;   //Número máximo de pasos del Stepper
   MinSteps: Cardinal;   //Número mínimo de pasos del Stepper
   StopOUT: Cardinal;    //Posición de parada sentido OUT del Stepper
   StopIN: Cardinal;     //Posición de parada sentido IN del Stepper
   COMPort: String;      //Puerto Serial seleccionado
 
 implementation
 
 {$R *.dfm}
 
 //Procedimiento para leer el registro//
 procedure TForm1.ReadRegistry(MaxSteps: Integer; MinSteps: Integer;
   StopOUT: Integer; StopIN: Integer; COMPort: String);
 begin
   RegNGFS:= TRegistry.Create;
   try
     RegNGFS.RootKey := HKEY_LOCAL_MACHINE;
     if RegNGFS.OpenKey('SOFTWARE\NGFS', FALSE) then
     begin
       RegNGFS.ReadCardinal('MaxSteps');
       MinSteps:= RegNGFS.ReadCardinal('MinSteps');
       StopOUT:= RegNGFS.ReadCardinal('StopOUT');
       StopIN:= RegNGFS.ReadCardinal('StopIN');
       COMPort:= RegNGFS.ReadString('COMPort');
     end;
   finally
     RegNGFS.Free;
   end;
 end;
 
 //Procedimiento para escribir el registro//
 procedure TForm1.WriteRegistry;
 begin
   RegNGFS:= TRegistry.Create;
   try
     RegNGFS.RootKey := HKEY_LOCAL_MACHINE;
     if RegNGFS.OpenKey('SOFTWARE\NGFS', TRUE) then
     begin
       RegNGFS.WriteCardinal('MaxSteps', MaxSteps);
       RegNGFS.WriteCardinal('MinSteps', MinSteps);
       RegNGFS.WriteCardinal('StopOUT', StopOUT);
       RegNGFS.WriteCardinal('StopIN', StopIN);
       RegNGFS.WriteString('COMPort', COMPort);
     end;
   finally
     RegNGFS.Free;
   end;
 end;
 
 end.

Actualización: He atrasado fuera de los bloques "try ... finally" la instrucción encargada de crear la instancia de la clase "TRegistry". Creo que así es lo suyo, puesto que de otro modo tal vez en caso de error habría problemas: siempre se pasaría por el "finally", pero, ¿no sería posible que no se hubiera creado la instancia de "TRegistry"?. De este modo en principio se creará la instancia, luego se pasará por el "try", y, en caso de excepción siempre se liberaría la instancia en luego de "finally". Tal vez en este caso concreto esto no fuera un problema, pero, quizá por mala costumbre suelo hacer así las cosas.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 11-10-2005 a las 04:16:29. Razón: Corrección del código fuente.
Responder Con Cita
  #5  
Antiguo 11-10-2005
CelestronFan CelestronFan is offline
Miembro
 
Registrado: oct 2005
Posts: 14
Poder: 0
CelestronFan Va por buen camino
Dec, te entendí perfectamente cuando me dijistes que subiera el código como un attachment, el problema es que al parecer tengo problemas con mi conexión y me da un error de timeout cuando intento subir un anexo más o menos largo al post.

Bueno, ahora si funcionó. Lo que aprendí es que debo tabular muy bien las estructuras para que no me pase esto.

Muchas gracias a ambos por su excelente ayuda.

Saludos y gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:56:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi