Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Stilgar - Febbraio 10, 2013, 04:00:34 pm

Titolo: Move maledetto...
Inserito da: Stilgar - Febbraio 10, 2013, 04:00:34 pm
Ciao a tutti.
Codice: [Seleziona]
class procedure TSystem.arrayCopy(const src:PChar; srcOffset: Integer; var dst:PChar; dstOffset: integer; count: Integer); overload;
var
  psrc : PChar;
  pdst : PChar;
begin
  psrc := src;
  inc(psrc, srcOffset);
  pdst := dst;
  inc(pdst, dstOffset);
  move(psrc,pdst,count);
end;         
class procedure TSystem.arrayCopy(const src: PChar; srcOffset: Integer; var dst: TCharDynArray; dstOffset: integer; count: Integer);
begin
  arrayCopy(src,srcOffset,PChar(dst), dstOffset, count);
end;

i vari offset sono a 0, per cui nell'incremento non influenzano nulla...
Qualcuno mi sa spiegare (debug docet) per quale motivo non mi copia una cippalippa da un puntatore all'altro?
dst rimane intonso ... era un PChar a stringa vuota e rimane un pchar a stringa vuota...
Stilgar
Titolo: Re:Move maledetto...
Inserito da: Stilgar - Febbraio 10, 2013, 05:03:55 pm
Modificato il codice. Ora falliscono gli unit test per altre cose ;)
Codice: [Seleziona]
class procedure TSystem.arrayCopy(const src: PChar; srcOffset: integer; var dst: PChar; dstOffset: integer; Count: integer); overload;
var
  psrc: PChar;
begin
  psrc := src;
  psrc := psrc + PtrInt(srcOffset);
  dst := dst + PtrInt(dstOffset);
  move(psrc^, dst^, Count * SizeOf(char));
  dst := dst - PtrInt(dstOffset);
end;

class procedure TSystem.arrayCopy(const src: PChar; srcOffset: integer; var dst: TCharDynArray; dstOffset: integer; Count: integer);
var
  pdst: PChar absolute dst;
begin
  arrayCopy(src, srcOffset, pdst, dstOffset, Count);
end;

Titolo: [SOLVED] Move maledetto...
Inserito da: Stilgar - Febbraio 10, 2013, 05:04:59 pm
Chiudo il thread
Titolo: Re:Move maledetto...
Inserito da: xinyiman - Febbraio 10, 2013, 08:15:04 pm
Hai risolto?!
Titolo: Re:Move maledetto...
Inserito da: Stilgar - Febbraio 10, 2013, 09:50:44 pm
Yez.
Titolo: Re:Move maledetto...
Inserito da: xinyiman - Febbraio 10, 2013, 10:09:44 pm
Come?!
Titolo: Re:Move maledetto...
Inserito da: Stilgar - Febbraio 10, 2013, 10:17:55 pm
hahaha, confronta i codici. Ho messo quello "sbagliato" nel primo post. Nel secondo quello "corretto".
Titolo: Re:Move maledetto...
Inserito da: xinyiman - Febbraio 10, 2013, 10:33:20 pm
Pensavo avessi ancora problemi a causa di questo messaggio

"Modificato il codice. Ora falliscono gli unit test per altre cose"
Titolo: Re:Move maledetto...
Inserito da: Stilgar - Febbraio 11, 2013, 09:43:38 am
a ok.
Ho sistemato le move e ho fatto in modo che gli unit test andassero a buon fine sistemando altre rogne.
Ora i test funzionano tutti ;)
Stilgar
Titolo: Re:Move maledetto...
Inserito da: xinyiman - Febbraio 11, 2013, 05:25:16 pm
Moooolto bene
Titolo: Re:Move maledetto...
Inserito da: Stilgar - Febbraio 11, 2013, 05:59:12 pm
Tutto committato su SVN del progetto su SF.