Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con una Variable (https://www.clubdelphi.com/foros/showthread.php?t=61414)

pmtzg 06-11-2008 17:03:17

Ayuda con una Variable
 
hola compañeros
quiero hacerles una pregunta
navegando por la red me encontre una aplicación que estoy investigando

y no tengo idea como usar o dr el parametro correcto para su uso

la instrucción es la siguiente:
Código Delphi [-]
 
 
function TForm1.GetConfigParameter(Param: string; Count: pword): string;


pero a la hora de llamar a la función no se que parametro va en Conut : pword

según la instrucción de uso es la siguiente :

Código Delphi [-]
 
 
Edit1.Text := GetConfigParameter(PARADOXLEVEL, @Count);
se que Param es igual a uns string := ' aqui va algo';

pero en el pword no se que va o que tipo es !!!

es tonta mi pregunta pero desconozco el pword

gracias por su tiempo.

dec 06-11-2008 17:15:16

Hola,

Se trata de un "Pointer to word" ("pword"), un puntero a una variable de tipo "word". De ahí el uso de la "arroba" (que sirve para referenciar punteros) como en el ejemplo de más arriba, en "@Count". Este tipo de dato ("word") es numérico y puede contener valores de 0 hasta 65,535, como puedes ver en Delphi Basics, por ejemplo.

ContraVeneno 06-11-2008 17:18:17

Según la ayuda de delphi (presionando F1):
Cita:

Empezado por F1Delphi
PWord is a pointer to a Word variable.

Es decir, Pword es un puntero a una variable tipo "Word" y una variable tipo "Word" es un entero de 16 bits:
Cita:

Empezado por F1Delphi
16-bit unsigned integer.


pmtzg 06-11-2008 18:36:00

Cita:

Empezado por dec (Mensaje 324502)
Hola,

Se trata de un "Pointer to word" ("pword"), un puntero a una variable de tipo "word". De ahí el uso de la "arroba" (que sirve para referenciar punteros) como en el ejemplo de más arriba, en "@Count". Este tipo de dato ("word") es numérico y puede contener valores de 0 hasta 65,535, como puedes ver en Delphi Basics, por ejemplo.


gracias

pero si utilizo esta opción
Código Delphi [-]
 
 
Edit1.Text := GetConfigParameter('paradox\unit\ ', 1);

no es correcto !!!!
como lo usaria; Perdón pero ahora si ando bien norteado

DarkMan 06-11-2008 19:03:36

Prueba usando un puntero:
Código Delphi [-]
var Count: Word;
begin
 Count:=1; 
 Edit1.Text := GetConfigParameter(PARADOXLEVEL, @Count);
end;
Con el puntero lo que haces no es pasar el valor de la variable, sino pasar la dirección de memoria en la que se encuentra el valor de la variable.

pmtzg 06-11-2008 19:14:24

manda un mensaje de error
 
gracias por tu ayuda pero
me manda un mensaje de error


me dice :

program or unit 'bde' recursively uses itself

y no corre el programa.

este es el cogigo completo :
Código Delphi [-]
function TForm1.GetConfigParameter(Param: string; Count: pword): string;
var
  hCur: hDBICur;
  rslt: DBIResult;
  Config: CFGDesc;
  Path, Option: string;
  Temp: array[0..255] of char;
begin
  Result := ''; hCur := nil;
  if Count <> nil then
    Count^ := 0;
  try
    if Pos(';', Param) = 0 then
      raise EDatabaseError.Create('Invalid parameter passed to function.  There must ' +
         'be a semi-colon delimited sting passed');
    Path := Copy(Param, 0, Pos(';', Param) - 1);
    Option := Copy(Param, Pos(';', Param) + 1, Length(Param) - Pos(';', Param));
    Check(DbiOpenCfgInfoList(nil, dbiREADONLY, cfgPERSISTENT, StrPCopy(Temp, Path), hCur));
    Check(DbiSetToBegin(hCur));
    repeat
      rslt := DbiGetNextRecord(hCur, dbiNOLOCK, @Config, nil);
      if rslt = DBIERR_NONE then
      begin
        if StrPas(Config.szNodeName) = Option then
          Result := Config.szValue;
        if Count <> nil then
          Inc(Count^);
      end
      else
        if rslt <> DBIERR_EOF then
          Check(rslt);
    until rslt <> DBIERR_NONE;
  finally
    if hCur <> nil then
      Check(DbiCloseCursor(hCur));
  end;
end;

dec 06-11-2008 19:17:09

Hola,

Respecto de lo primero, creo que también podría hacerse así:

Código Delphi [-]
GetConfigParameter(PARADOXLEVEL, PWord(1));

Y respecto lo segundo, me temo que el problema no tiene nada que ver. Es un problema con la unidad "BDE", aunque me parece extraño, quiero decir, que nunca me he topado con algo así si no recuerdo mal. ¿Debe ser que la unidad "BDE" requiere a su vez de la unidad "BDE"? :rolleyes:

pmtzg 06-11-2008 19:21:24

nombre del proyecto
 
bueno, sera que al nombre del proyecto lo llame

bde.pdr

y me sigue mandando el mismo error


esta es la liga de donde lo saque

http://info.borland.com/devsupport/b...st.html#Bottom

dec 06-11-2008 19:24:19

Hola,

Pues hay muchas probabilidades de que se trate de eso: de que no puedes llamar al proyecto "BDE", porque existe una unidad del mismo nombre, que, además usas en el proyecto en cuestión. Renombrar tu proyecto (que será lo más sencillo) y prueba a ver.

egostar 06-11-2008 19:27:36

No será algo que tenga que ver con el ejemplo que usas?

Cita:

Example 2: Set a particular value in the IDAPI.CFG configuration file (16-Bit Only) and (32-Bit, BDE v4.51 and later).

NOTE: Do not use this procedure version if you are using BDE v4.50 and earlier (See Example 3 below)

Cita:

Example 3: Set a particular value in the IDAPI.CFG configuration file }(32-Bit Only; All Versions).

NOTE: You must use this procedure version if you are using BDE v4.50 and earlier

Salud OS

pmtzg 06-11-2008 19:31:34

datos
 
pero lo que deseo hacer es sacar datos del idapi.cfg
no grabar

si estoy en lo correcto ???

Lepe 06-11-2008 20:20:19

¿y para qué? Yo te aconsejo que le eches una visual al TSession de delphi y al TDatabase, no creo que necesites acceder directamente al idapi.cfg, porque el TSession ya lo hace y tienes métodos más cómodos.

Aunque por supuesto no sé lo que quieres hacer.

Saludos

pmtzg 06-11-2008 20:23:09

Idapi32.cfg
 
ah mira
lo que deseo hacer es sacar información del idapi32.cfg

por ejemplo saber que parametro tiene
la pestaña de Configuración
configuracion,Drivers,Native,Paradox- Net Dir


pero creo que no lei bien el ejemplo y es para hacer otra cosa

eso trato de hacer que desde delphi pueda sacar este parametro !!!

gracias

Lepe 07-11-2008 13:56:20

pones el Tsession, configuras el alias (que también podrás sacar una lista por código buscando en el foro) y después usas:

session.PrivateDir
session.NetFileDir
etc.

Saludos


La franja horaria es GMT +2. Ahora son las 04:25:22.

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