![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola estoy teniendo problemas con el ordenador (posiblemente placa) l lo digo por si veis que no contesto a vuestros mensajes, que es por ese motivo.
tsk voy a probar lo que comentas. Gracias. edito: He probado lo de FillByte y sigue dando el mismo error.. sigo investigando.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes. Última edición por danielmj fecha: 31-03-2018 a las 15:44:45. |
#2
|
|||
|
|||
Acabo de ver tu video, y el error que te marca es por intentar acceder a una región de memoria inválida, y el error está cuando invocas la función FillByte.
Hice lo siguiente para hacer unas pruebas, y a pesar de compilar, presenta unos errores. Código:
program Main; type TArrayBool = array[0..0] of boolean; PArrayBool = ^TArrayBool; var Lista : PArrayBool; begin Getmem(Lista,1 + 10*SizeOf(Boolean)); writeln(Lista^[0]); FillByte(Lista,1+10*SizeOf(Boolean),0); writeln(Lista^[1]); writeln(Lista^[3]); Lista^[3] := TRUE; writeln(Lista^[3]); writeln(Lista^[10]); writeln(Lista^[11]); writeln(Lista^[12]); writeln(Lista^[13]); FreeMem(Lista,1 + 10*SizeOf(Boolean)); writeln('Test'); end. Código:
fpc main.pas Free Pascal Compiler version 3.0.0 [2015/12/05] for x86_64 Copyright (c) 1993-2015 by Florian Klaempfl and others Target OS: Linux for x86-64 Compiling main.pas main.pas(13,20) Warning: range check error while evaluating constants (1 must be between 0 and 0) main.pas(14,20) Warning: range check error while evaluating constants (3 must be between 0 and 0) main.pas(15,12) Warning: range check error while evaluating constants (3 must be between 0 and 0) main.pas(16,20) Warning: range check error while evaluating constants (3 must be between 0 and 0) main.pas(17,20) Warning: range check error while evaluating constants (10 must be between 0 and 0) main.pas(18,20) Warning: range check error while evaluating constants (11 must be between 0 and 0) main.pas(19,20) Warning: range check error while evaluating constants (12 must be between 0 and 0) main.pas(20,20) Warning: range check error while evaluating constants (13 must be between 0 and 0) Linking main /usr/bin/ld: aviso: link.res contiene secciones de salida. ¿Olvidó -T? 23 lines compiled, 0.4 sec 8 warning(s) issued Código:
$ ./main TRUE Runtime error 216 at $0000000000400252 $0000000000400252 $000000000040018F Código:
$ ./main TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE Test También puedes observar que en FillByte cambién FillByte(Lista,1+10*SizeOf(Boolean),0) por FillByte(Lista^,1+10*SizeOf(Boolean),0), es ahí donde te marcaba el error 216. Código:
program Main; type TArrayBool = array[0..0] of boolean; PArrayBool = ^TArrayBool; var Lista : PArrayBool; begin //Lista := GetMem(1 + 10*SizeOf(Boolean)); Getmem(Lista,1 + 10*SizeOf(Boolean)); writeln(Lista^[0]); writeln(Lista^[1]); writeln(Lista^[2]); FillByte(Lista^,1+10*SizeOf(Boolean),0); writeln(Lista^[0]); writeln(Lista^[1]); writeln(Lista^[2]); writeln(Lista^[10]); writeln(Lista^[11]); writeln(Lista^[12]); writeln(Lista^[13]); FreeMem(Lista,1 + 10*SizeOf(Boolean)); writeln('Test'); end. Código:
$ ./main TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE Test Código:
program Main; type TArrayBool = array[0..0] of boolean; PArrayBool = ^TArrayBool; var Lista : PArrayBool; begin //Lista := GetMem(1 + 10*SizeOf(Boolean)); Getmem(Lista,1 + 10*SizeOf(Boolean)); writeln(Lista^[0]); writeln(Lista^[1]); writeln(Lista^[2]); FillByte(Lista^,1+10*SizeOf(Boolean),1); writeln(Lista^[0]); writeln(Lista^[1]); writeln(Lista^[2]); writeln(Lista^[10]); writeln(Lista^[11]); writeln(Lista^[12]); writeln(Lista^[13]); FreeMem(Lista,1 + 10*SizeOf(Boolean)); writeln('Test'); end. Código:
$ ./main TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE Test |
#3
|
||||
|
||||
Hola de nuevo, he tenido una semana liado con el pc, pensaba que era cosa de placa pero era la fuente.
Vuelvo a retomar el trabajo y ahora si funciona tsk. Gracias.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes. |
#4
|
||||
|
||||
Buenos dias, he probado lo que dices tsk y me encuentro con que la unidad UTAlea encargada de generar números aleatorios, repite los números cosa que antes de implementarla para lazarus no hacía. Adjunto dos unidades (en delphi y en lazarus) para que veas, veais las diferencias que son mínimas.
Mientras la versión para delphi lo hace perfectamente, incluir la linea Código:
FillByte(Lista^,1+10*SizeOf(Boolean),0); Delphi Lazarus Al subir uno de los archivos al servidor ftp no me di cuenta y lo subí sin asignar una carpeta adecuada, se subió a la raiz. Que algún administrador lo borre. Sorry. Captura de repetición de númeos aleatorios Un saludo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes. |
#5
|
||||
|
||||
Veo que has cambiado "Maximo" por " 10*SizeOf(Boolean)" en algunos sitio. ¿Por qué razón? Aunque la verdad es que no sé si tiene que ver con que se repitan números.
|
#6
|
|||
|
|||
Si debería ser Maximo*SizeOf(Boolean).
Aunque no creo que FillByte sea el que cause los números repetidos, ya que lo único que hace es poner los el arreglo a 0. Eso debe estar en otra parte del código. En un rato hago otras pruebas para descartar que se pudieran sobre escribir sectores de memoria que pudiera interferir, aunque no lo creo. |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Meetup #3 - Migrar Un componente de Lazarus a Delphi Starter | egostar | La Taberna | 1 | 20-07-2017 23:11:17 |
problemas al migrar aplicacion lazarus windows a lazarus linux | anubis | Linux | 5 | 08-11-2016 15:41:58 |
Migrar Aplicacion Lazarus De Ubuntu A Windows | volv87 | Lazarus, FreePascal, Kylix, etc. | 4 | 26-07-2007 08:03:07 |
Migrar aplicacion Delphi | triskel | Windows | 1 | 10-05-2005 13:26:04 |
migrar una aplicacion | alfgonvar | Varios | 2 | 04-07-2003 18:15:24 |
![]() |
|