Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Проблема с move   Найти похожие ветки 

 
Separator ©   (2005-11-27 08:37) [0]


var
   fCells: array of array of PChar;

procedure SetCell(const ACol, ARow: Integer; const Value: String);
var
   Len: Cardinal;
begin
   FreeMemory(fCells[ARow, ACol]);
   Len:= Length(Value);
   fCells[ARow, ACol]:= GetMemoty(Len);
   Move(Value[1], fCells[ARow, ACol][0], Len)
end


В общем если Len = 1 или 2, то при Move почему-то копируется 3 байта. Если Len = 4 то копируется 6 байт. И т.д.


 
TUser ©   (2005-11-27 09:27) [1]

прежде всего напиши move(PChar(Value)[0],...


 
TUser ©   (2005-11-27 09:28) [2]

а точнее будет не move, а copymemory


 
begin...end ©   (2005-11-27 10:02) [3]

> TUser ©   (27.11.05 09:27) [1]
Зачем?

> TUser ©   (27.11.05 09:28) [2]
Почему?


 
Separator ©   (2005-11-27 10:24) [4]


> TUser ©   (27.11.05 09:27) [1]

Точно зачем? Ведь String(value)[1] как раз и указывает туда, куда Pchar(value)[0]


 
Набережных С. ©   (2005-11-27 11:13) [5]


> Move(Value[1], fCells[ARow, ACol][0], Len)

> если Len = 1 или 2, то при Move почему-то копируется 3 байта.
>  Если Len = 4 то копируется 6 байт.

Этого не может быть, потому, что не может быть никогда:) И, кстати, копировать все-же нужно Len + 1 байт - PChar требуется завершающий нуль. Или использовать StrPCopy.


 
Lamer@fools.ua ©   (2005-11-27 11:15) [6]

>>Separator ©   (27.11.05 08:37)

>Move(Value[1], fCells[ARow, ACol][0], Len)
Нуль-терминатор Пушкин будет записывать?
Move(Value[1], fCells[ARow, ACol][0], Len + 1)

К тому же, если Len = 0, лучше сразу присвоить:
fCells[ARow, ACol] := nil
без Move.


 
Separator ©   (2005-11-28 07:15) [7]

Все, как оказалось все проблемы были именно из-за #0, точней из-за того, что я его не ставил.


 
Separator ©   (2005-11-28 07:59) [8]

Кстати, можете посмотреть:
http://Sergey-Vilgelm.narod.ru/source/spcsv.rar
Модуль предназначен для работы с CSV файлами.
Я хочу знать, какие еще там недочеты есть, как можно лучше написать.
В общем, просьба - укажите на ошибки



Страницы: 1 вся ветка

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
4-1127738848
NikNet
2005-09-26 16:47
2005.12.11
Как сделать мою форму позади всех?


14-1132513063
SergProger
2005-11-20 21:57
2005.12.11
Какой Socket у Pentium 3 ?


1-1131782900
mfender
2005-11-12 11:08
2005.12.11
TDateTime и зимнее/летнее время и пересчёт из/в UNUX Timestamp


1-1132156397
markers
2005-11-16 18:53
2005.12.11
"Конец перетаскивания"


3-1130272692
alpine
2005-10-26 00:38
2005.12.11
Можно ли добавить поле из третьей таблицы ?