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

Вниз

Работа с памятью.   Найти похожие ветки 

 
Viktor Kushnir   (2002-09-16 08:50) [0]

Подкиньте люди мне функцию типа copymemory,
но чтобы могла она копировать со смещением, т.е. не с начала указателя, а с указателя+10(байт) например.
И еще такую что бы также записовала не сначала а тоже со смещением.

Или хотя бы расскажите про то как винда в памяти разные переменные хранит.

String, Array[x..y] of.., Array of, Record, Set of...
ну в общем кто что знает.


 
Opuhshii   (2002-09-16 09:34) [1]

:-/ ,.. мда,..
а как Вы это себе представляете,.
CopyFromOffset1,CopyFromOffset2, CopyFromOffset3...CopyFromOffsetN.


Array Of Integer,..
-4 0 1 2 3 4 5 6 7
[Длинна][$EF FF FF FF][$EF FF FF FF][#00]

часный случай Array Of, - String последовательность char,

-8 -4 0 1 2 3 4 5 6 7.....
[Счетчик ссылок][Длинна][ ][H][E][L][L][O][,][#32][W][O][R][L][D][#00]

часный случай ShortString
0 1 2 3 4 5 6 7.....
[Длинна][H][E][L][L][O][,][#32][W][O][R][L][D][#00]

читaй Object Pascal Reference,...

"как винда в памяти разные переменные хранит" - %))))))


 
Opuhshii   (2002-09-16 09:36) [2]

%))
:-/ ,.. мда,..
а как Вы это себе представляете,.

CopyFromOffset1,CopyFromOffset2, CopyFromOffset3...CopyFromOffsetN.


Array Of Integer,..

-4 0 1 2 3 4 5 6 7
[Длинна][$EF FF FF FF][$EF FF FF FF][#00]

часный случай Array Of, - String последовательность char,

-8 -4 0 1 2 3 4 5 6 7.....
[Счетчик ссылок][Длинна][ ][H][E][L][L][O][,][#32][W][O][R][L][D][#00]

часный случай ShortString

0 1 2 3 4 5 6 7.....
[Длинна][H][E][L][L][O][,][#32][W][O][R][L][D][#00]

читaй Object Pascal Reference,...

"как винда в памяти разные переменные хранит" - %))))))


 
Polevi   (2002-09-16 10:00) [3]

ну например так
MoveMemory(Pointer(DWORD(FBuffer)+sizeof(DWORD)),FBuffer,FSize);


 
Anatoly Podgoretsky   (2002-09-16 10:05) [4]

А обычный MOVE что в отставку?


 
Space Rover   (2002-09-16 10:13) [5]

Я обычно делаю так:

- для получения байта
Move(Pointer(Longint(FBuffer) + Pos)^, Bytes_Get, 1);

- для записи байта
Move(Bytes_Put, Pointer(Longint(FBuffer) + Pos)^, 1);

очень легко переделать на получение и запись данных любого размера.

А вообще смотри как устроен класс TStream и его потомки.


 
Serg Gurin   (2002-09-19 01:08) [6]

Move(Pointer(Longint(@Var1) + Pos1 * ElementSize)^, Pointer(Longint(@Var2) + Pos2 * ElementSize)^, N * ElementSize)

Var1 и Var2 - это переменные (не указатели)
если с указателями, то

Move(Pointer(Longint(Var1) + Pos1 * ElementSize)^, Pointer(Longint(Var2) + Pos2 * ElementSize)^, N * ElementSize)

если это массивы типа array of type, то

Move(Var1[Pos1], Var2[Pos2], N * ElementSize)

где ElementSize - размер элемента в байтах, обычно определяется функцией SizeOf(Type), где Type - тип элемента
Pos1 - с какой позиции сдвинуть
Pos2 - на какую позицию сдвинуть
N - какое количество элементов сдвинуть


 
Viktor Kushnir   (2002-09-19 06:57) [7]

Всем спасибо! Все действительно так как здесь написано.



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

Форум: "Система";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.014 c
14-59395
}{unter
2002-10-30 15:21
2002.11.18
ERSI и GIS


1-59241
down
2002-11-06 19:37
2002.11.18
OemToChar, CharToOem для произвольных кодировок


1-59233
бобёр
2002-11-06 18:22
2002.11.18
Memo


14-59389
Николай Быков
2002-10-30 11:40
2002.11.18
Команда кодеров :-)


7-59450
Viktor Kushnir
2002-09-16 08:50
2002.11.18
Работа с памятью.





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