Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по работе с Move


Walter White ©   (2014-05-15 11:23:00) 

Нужно ли Buf в Move приводить к PChar?


var
 S1, S2: string;
 Buf: Pointer;
begin
 S1 := 'test';
 GetMem(Buf, 255);
 try
   Move(PChar(S1)^, PChar(Buf)^, 255); // <- PChar(Buf)^ ?
   S2 := PChar(Buf);
 finally
   FreeMem(Buf);
 end;


или можно:


Move(PChar(S1)^, Buf^, 255);


Dimka Maslov   (2014-05-16 16:33:00) [1]

А ещё почему именно 255?


Cobalt   (2014-05-16 11:20:00) [2]

Не верьте коду, найденному "в интернетах" - там 90% говнокод.

Пока не разъясните, зачем нужно приведение к PChar - не делайте так.


MBo   (2014-05-15 13:22:00) [3]

Промежуточное приведение к string лишнее.


Walter White   (2014-05-15 12:15:00) [4]


> RWolf ©   (15.05.14 11:30) [1]
> S2 := S1;
> UniqueString(S2);
> не?
>
> brother ©   (15.05.14 11:38) [2]
> чего сделать то хотите?


пишу наследника TDataSet, в нем перегружаю метод GetFieldData(Field: TField; Buffer: Pointer): Boolean;

для FieldType = ftString нужно в Buffer записать строку. Как это правильно сделать? Делаю так:

Move(PChar(SL[Field.Index])^, PChar(string(Buffer))^, 255);

Работает, но есть сомнения.


brother   (2014-05-15 11:38:00) [5]

чего сделать то хотите?


RWolf   (2014-05-15 11:30:00) [6]

S2 := S1;
UniqueString(S2);

не?


Наверх

Титульная страница Поиск, карта сайта Написать письмо