Главная страница
    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.45 MB
Время: 0.035 c
3-1130404294
Ильичев С.А.
2005-10-27 13:11
2005.12.11
CreateParameter


14-1132553072
Ega23
2005-11-21 09:04
2005.12.11
С днем рождения! 20 ноября


8-1120762481
ronyn
2005-07-07 22:54
2005.12.11
Как к тексту добавить графику?


14-1132161973
SPeller
2005-11-16 20:26
2005.12.11
Чайный гриб


14-1132441218
тень отца Гамлета
2005-11-20 02:00
2005.12.11
Чемпион по AV





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский