PDA

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