Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
14-1132562028
Drakosha
2005-11-21 11:33
2005.12.11
Энциклопедия.


1-1131962564
Дмитрий_05
2005-11-14 13:02
2005.12.11
Окно программы не высвечивается в таскбаре


1-1131691942
Shopot
2005-11-11 09:52
2005.12.11
Как нарисовать в Delphi объекты как в Excel е?


4-1129098748
MEDJIK
2005-10-12 10:32
2005.12.11
Железо


1-1131507885
TFire
2005-11-09 06:44
2005.12.11
Как вытянуть History из Mozilla FireFox ?




   Наверх