PDA

Ver la Versión Completa : ¿Cómo convertir de word a integer?


bluegene
17-03-2007, 17:18:47
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


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:


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:


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
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:

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

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:

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:


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.