Главная страница
    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.053 c
14-1132476961
boriskb
2005-11-20 11:56
2005.12.11
Рекомендую сайт


14-1132304552
Vlad Oshin
2005-11-18 12:02
2005.12.11
Все. Вообще все наперекосяк....


1-1132010992
Dark Lord
2005-11-15 02:29
2005.12.11
Форма в dll


2-1133109175
Neosted
2005-11-27 19:32
2005.12.11
Текстовый файл


2-1132560943
Perf2k2
2005-11-21 11:15
2005.12.11
Как прибавить к строке еще несколько слов?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский