Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.053 c
3-1130245819
Sergey13
2005-10-25 17:10
2005.12.11
Ошибка ORA-01467 и как с ней бороться


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


14-1132222541
Vlad Oshin
2005-11-17 13:15
2005.12.11
Написал заявление. Нафиг.


4-1129026072
Alex_Korn
2005-10-11 14:21
2005.12.11
Размер стека


2-1132587016
aglar
2005-11-21 18:30
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский