Ver la Versión Completa : Problemas con lazarus
walito
21-06-2007, 00:13:03
Buenas, les cuento el inconveniente que estoy teniendo para ver si alguno le paso alguna vez.
Resulta que el siguiente codigo anda en delphi pero no en lazarus:
procedure TForm1.Button1Click(Sender: TObject);
var
array1: array of byte;
txt: string;
begin
SetLength(array1, 20);
ZeroMemory(@array1[0], high(array1));
txt := 'hola mundo';
StrPLCopy(@array1[0], txt, High(array1));
end;
este ejemplo lo encontre en el foro y en delphi anda bien, ahora en lazarus me da la impresion que el SetLength no funciona ya que hace cualquier cosa, por empezar no me setea a la longitud que yo quiero y el ZeroMemory no me pone en #0 los valores.
Que puede ser? ya no se que mas buscar, en la pagina de la documentacion del freepascal (http://community.freepascal.org:10000/docs-html/ref/refsu14.html#x36-390003.3.1) sale que se usa asi pero ami no me anda.
Algun TIP por ahi?
Gracias
Robert01
21-06-2007, 04:38:58
Que es ZeroMemory? Es un procedure? Yo no entiendo lo que hiciste ahí, está poco claro.
Yo definiría fuera del evento click del botón. Además me parece que tendrías que difinir lo que es ZeroMemory salvo que yo esté equivocado.
Saludos
Robert01
21-06-2007, 12:59:56
El código compila sin errores en Lazarus. Mira si agregaste Windows en uses
Uses Windows;
Además se requiere definir la constante MAX_LENGTH
MAX_LENGTH = 10;
Saludos
walito
21-06-2007, 15:40:26
Que es ZeroMemory? Es un procedure? Yo no entiendo lo que hiciste ahí, está poco claro.
Yo definiría fuera del evento click del botón. Además me parece que tendrías que difinir lo que es ZeroMemory salvo que yo esté equivocado.
Saludos
Estimado, ZeroMemory lo que hace es poner el array en 0 todos sus elementos.
walito
21-06-2007, 15:43:44
El código compila sin errores en Lazarus. Mira si agregaste Windows en uses
Código Delphi [-] (http://www.clubdelphi.com/foros/#)Uses Windows;
Además se requiere definir la constante MAX_LENGTH
Código Delphi [-] (http://www.clubdelphi.com/foros/#)MAX_LENGTH = 10;
Saludos
Si, compilar compila bien, pero si haces un seguimiento linea por linea y vas inspeccionando vas a ver que hace cualquier cosa.
Por empesar cuando setea la longitud e inspeccionas vas a ver que no hace nada.
Robert01
21-06-2007, 19:05:07
Hola
Yo probé con el codigo que había en delphi en el foro (el que usa el memo, etc) y en lazarus anda perfectamente bien.
Debes tener en cuenta que lazarus no es un clon de delphi, hay cosas que son diferentes, posiblemente haya que cambiar algunas cosas.
Si tengo tiempo más tarde voy a ver que es lo que está pasando.
En la guía de conversión de código de delphi a lazarus hay algunas pautas sobre como pasar punteros, etc. No se si la has leído.
Posiblemente este sea un problema de ese tipo.
Saludos
walito
21-06-2007, 19:21:25
Hola
Yo probé con el codigo que había en delphi en el foro (el que usa el memo, etc) y en lazarus anda perfectamente bien.
Debes tener en cuenta que lazarus no es un clon de delphi, hay cosas que son diferentes, posiblemente haya que cambiar algunas cosas.
Si tengo tiempo más tarde voy a ver que es lo que está pasando.
En la guía de conversión de código de delphi a lazarus hay algunas pautas sobre como pasar punteros, etc. No se si la has leído.
Posiblemente este sea un problema de ese tipo.
Saludos
Ah!! ese tip me interesa, donde esta?? igual en este LINK (http://community.freepascal.org:10000/docs-html/ref/refsu14.html#x36-390003.3.1) que es la doc de lazarus explica y es igual q delphi por eso me parece raro, pero por favor si tenes ese link me lo podrias compartir?
gracias
Robert01
21-06-2007, 20:56:39
Mirá estas páginas
1 (http://port2laz.blogspot.com/)
2 (http://lazarusroad.blogspot.com/)
3 (http://lazarus-ccr.sourceforge.net/index.php?wiki=CodeConversionGuide)
Supongo que has buscado en wiki sobre lazarus. Yo he estado probando, he traducido varios ejemplos de aplicaciones. Siempre surgen dificultades pero esto es algo con lo que hay que contar.
Saludos
cHackAll
24-06-2007, 02:37:36
...Debes tener en cuenta que lazarus no es un clon de delphi, hay cosas que son diferentes, posiblemente haya que cambiar algunas cosas.
No es un clon, puede que sea basado en la IDE y el lenguaje pero eso no lo hace un clon, en definitiva hay que cambiar cosillas; Me baje el Lazarus, y podré ayudarte... pudiste lo del "hello world"? qué quieres hacer?
Saludos
walito
24-06-2007, 16:26:37
Ya lo solucione, por lo menos una function.
El ZeroMemory de delhpi es el FillByte en lazarus, ojo que es para mi caso.
Hay mas de FillChar, etc.
Estaba haciendo un server que empeze en windows pensando que era portable, pero NO!, cambian muchas cosas.
Recomiendo que si van hacer algo que es para Windows, lo hagan en windows, si van hacer algo para Linux lo hagan en linux, esto ya para cosas un poco mas complejas. Si van hacer unos Fomrs no hay drama.
Gracias a todos y saludos.
Robert01
24-06-2007, 18:30:08
Recomiendo que si van hacer algo que es para Windows, lo hagan en windows, si van hacer algo para Linux lo hagan en linux, esto ya para cosas un poco mas complejas.
A ese problema ya lo he tenido, por ejemplo con el procedure polybezier:
En unit windows
polybezier(image1.canvas.handle, BB, NB2+1);
En unit Graphics esta
procedure PolyBezier(Points: PPoint; NumPts: Integer;Filled: boolean = False;);
Pero en lazarus para linux polybezier es diferente a estas dos
Saludos
Robert01
24-06-2007, 18:34:26
Perdón pero cometí un error, en la unit windows de lazarus no hay procedure polybezier, me confundí con delphi.
saludos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.