On Sat, 24 Mar 2007 13:35:24 +0300, Daniël Mantione <[EMAIL PROTECTED]> wrote:

> > procedure add_mem(var P: dynamic_array_ptr; var cur_size:Integer);
> > var
> > i:Integer;
> > buff_ptr:dynamic_array_ptr;
> > begin
> > getmem(buff_ptr,cur_size*sizeof(BusStation) );
> > for i:=1 to cur_size do
> > buff_ptr^[i] := P^[i];
> > freemem(P);
> > cur_size:=cur_size+buf_count;
> > getmem(P,cur_size*sizeof(BusStation) );
> > for i:=1 to (cur_size-buf_count) do
> > P^[i] := buff_ptr^[i];
> > freemem(buff_ptr);
> > cur_size:=cur_size+buf_count;
> > end;

>
> Why do you increase cur_size two times? At the end of the procedure
> cur_size is larger than the buffer is.

Ou, surely. But it is new bug. When I used tp there was'n second increase. Also buf_count value is 10 and I have tried to add only 5 elements. After
second startup the problems have begun.

Well, all I can say is check your code securely. The basic idea is good,
so it is likely the implementation.
I will try. May be there is some problem with index and memory in tp and dos (dos emulation in NT) is unsecure.



> Further, you want to use move instead of a for loop, since in TP the
> speed difference is even larger than in FP.

Sorry, but I didn't understand what you ment exactly. You ment to use ptr_buf
= P and then getmem(P) and for loop?

Instead of:

for i:=1 to cur_size do
  buff_ptr^[i] := P^[i];

... do:

move(p^[1],buff_ptr^[1],(cur_size-1)*sizeof(p^);

Thanks, I will try.

Also, is your array really 1-based?

Hm... I didn't understand. I have such definitions of my array:

type dynamic_array = array[1..buf_count] of BusStation; //BusStation is record with 4 strings
dynamic_array_ptr = ^dynamic_array;
var

list:dynamic_array_ptr;  // it's my "dynamic array" with its size counter
list_count:Integer;
...
// How I use it:
for i:=1 to num_of_strings do
  begin
  if i > list_count then
     add_mem(list,list_count);


I herd that there were problems with dos games: sometimes they started not from the beginning, but from last time ending.

--
Best regards
E.I.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to