Ok, I'll check it out. Thanks guys, did not realize it was a pointer, too many years writing scripts instead of code. Thanks!!
On Thu, Jan 6, 2022, 11:51 PM Michael Van Canneyt <mich...@freepascal.org> wrote: > > > On Thu, 6 Jan 2022, Ozz Nixon via fpc-devel wrote: > > > Procedure Make_Language_File( > > Description,MenuPath,TextPath,QuestPath:String; > > Enabled:Boolean;SecurityLevel:Byte;Flags:Longint); > > Var > > FileSize:Longint; > > > > Begin > > Writeln('Language_File empty size is ',SizeOf(L)); > > FileSize:=0; > > Description:=Description+#0; > > Inc(FileSize,Length(Description)); > > MenuPath:=MenuPath+#0; > > Inc(FileSize,Length(MenuPath)); > > TextPath:=TextPath+#0; > > Inc(FileSize,Length(TextPath)); > > QuestPath:=QuestPath+#0; > > Inc(FileSize,Length(QuestPath)); > > SetLength(L.Description,Length(Description)); > > SetLength(L.MenuPath,Length(MenuPath)); > > SetLength(L.TextPath,Length(TextPath)); > > SetLength(L.QuestPath,Length(QuestPath)); > > Move(Description[1],L.Description,Length(Description)); > > This code is wrong. That must be > > Move(Description[1],L.Description[0],Length(Description)); > > > Move(MenuPath[1],L.MenuPath,Length(MenuPath)); > > Same here. > Move(MenuPath[1],L.MenuPath[0],Length(MenuPath)); > > > Move(TextPath[1],L.TextPath,Length(TextPath)); > > Same here > Move(TextPath[1],L.TextPath[0],Length(TextPath)); > > > Move(QuestPath[1],L.QuestPath,Length(QuestPath)); > > Same here. > Move(QuestPath[1],L.QuestPath[0],Length(QuestPath)); > > These fields are dynamic arrays, in essence pointers to a memory block. > > Your code writes to the memory area for pointer, not to the memory area > the pointer points to. > > Michael. >
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel