Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Cómo convertir de word a integer? (https://www.clubdelphi.com/foros/showthread.php?t=41523)

bluegene 17-03-2007 17:18:47

¿Cómo convertir de word a integer?
 
Hola a todos, este es mi primer mensaje y espero que no sea el último, algo ando desesperado buscando una manera de convertir word en integer en Pascal, si alguien fuera tan amable de ayudarme, le estaría muy agradecido :)

roman 17-03-2007 17:24:27

No entiendo tu problema. Un Word es un entero sin signo de 16 bits con rango de 0 a 65535, mientras que un Integer es un entero con signo de 32 bits con rango de -2147483648 a 2147483647, así que no hay ningún problema en asignar el Word al Integer.

// Saludos

Onti 17-03-2007 17:25:01

Simplemente asigna el valor en variable integer

Código Delphi [-]
Var
  Lword    :Word;
  LInteger :Integer;
begin
  LWord    :=561;
  LInteger :=LWord;

Onti 17-03-2007 17:25:47

Y bienvenido a Club ;)

dec 17-03-2007 17:27:45

Hola,

En principio el tipo word es un subconjunto del tipo integer, es decir, puedes asignar el valor de una variable del tipo word a otra del tipo integer:

Código Delphi [-]
var
  d: word;
  i: integer;
begin
  d := 5;
  i := d;
  {...}
end;

Algo como lo anterior es posible, como digo. También podrías "hacer un cast" de la variable de tipo word para asignar su valor a otra de tipo integer:

Código Delphi [-]
var
  d: word;
  i: integer;
begin
  d := 5;
  i := integer(d);
  {...}
end;

Si esto no te soluciona "el problema" acaso tengas que dar más información; si obtienes un error del compilador o cualquier otro tipo de error refiere aquí el mensaje de error en cuestión.

dec 17-03-2007 17:28:18

Hola,

Bueno. A ver si nos ponemos de acuerdo. Cuando yo esté contestando que no conteste nadie más, ¿vale? :D :D :D

roman 17-03-2007 17:32:26

No sé los demás, pero cuando tú estabas contestando, yo no lo estaba haciendo, yo ya lo había hecho. :D :D

// Saludos

dec 17-03-2007 17:38:31

Grrrrrrrr...

:eek: :cool: :rolleyes: ;) :p :) :D

Onti 17-03-2007 17:51:22

Yo levante mi cabeza por encima de mi PC y no vi nadie respondiendo.
:p

seoane 17-03-2007 17:53:15

Sois unos AGONIOSOS :p

bluegene 17-03-2007 19:10:08

Muchas gracias a todos por vuestras respuestas, estoy un poco lelo, me debería haber dado cuenta de un detalle así... :P

Delphius 17-03-2007 22:29:26

Cita:

Empezado por bluegene
estoy un poco lelo, me debería haber dado cuenta de un detalle así... :P

Eso nos pasa a muchos, a mi me ha pasado cuando recien me enganchaba con el lenguaje. Y no tienes que sentirte lelo... a más de uno nos debe haber pasado y por ello no podemos decirnos que somos unos lerdos, o tontos.
Ante una duda como esa, yo le mando el F1 y me fijo:

Código:

Type      Range                                Format
Integer    –2147483648..2147483647    signed 32-bit
Cardinal    0..4294967295                  unsigned 32-bit

Código:

Type        Range                    Format
Shortint    –128..127                          signed 8-bit
Smallint    –32768..32767                    signed 16-bit
Longint      –2147483648..2147483647    signed 32-bit
Int64        –2^63..2^63–1                  signed 64-bit
Byte          0..255                              unsigned 8-bit
Word        0..65535                            unsigned 16-bit
Longword  0..4294967295                    unsigned 32-bit

Saludos,

JXJ 18-03-2007 20:49:31

y para DWord pasarlo a integer

¿como se hace?

Delphius 18-03-2007 21:41:07

JXJ, acabo de hacer una prueba, pues nunca hice este paso. Y en lo posible lo evito:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const ALGO: dword = $0010;
var un_algo: integer;
begin
  //un_algo := Integer(ALGO);
  ShowMessage(IntToStr(ALGO));
end;

El resultado es 16.

Y también probé con esta variante:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const ALGO: dword = $0010;
var un_algo: integer;
begin
  un_algo := Integer(ALGO);
  ShowMessage(IntToStr(un_algo));
end;

El resultado es el mismo.
¿Tal parece que el Cast o no usarlo es lo mismo?:confused:

Si respondo a tu pregunta.... avisame. La verdad es que evito en lo posible realizar Cast.

Saludos,

JXJ 19-03-2007 02:33:15

Hola

Delphius

gracias por responder.

Estoy tratando de portar un juego, de delphi 3 a Delphi win32 2006
mas o menos ahi va.

pero usa directx y para el video, tiene un archivo pas, para directx 7
y no compila, da errores,
en la parte del audio, tambien archivo pas para directx 7
usa DWORD, como variable para ajustar el audio, si más o menos audio

encontre una copia mas reciente para directx 9. de esos archivos pas
de los paquetes dspack
y en la funcion me pide un numero integer para cambiar el volumen
del audio, y ahi, el codigo, hace un llamado a una variable DWORD.

ya desesperado, por que no compilaba, solo cambie la llamada
de la funcion que pedia un dato integer, por uno dword,
y ya compilo, pero no he logrado hacer que funcione.

voy a probar, que tal anda, con tu codigo Delphius ...

seoane 19-03-2007 02:41:50

Solo un apunte, el equivalente a DWORD en delphi es Cardinal.

JXJ 19-03-2007 22:31:18

tambien da problemas, por que me dice, el error

incompatible tipes cardinal and integer

lo revisare denuevo con calma.

gracias.


La franja horaria es GMT +2. Ahora son las 06:28:52.

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