Главная страница
    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.007 c
14-59390
Tornado
2002-10-30 08:29
2002.11.18
Хороший FAQ по Дульфи


3-59059
mvg_first
2002-10-28 21:46
2002.11.18
Как настрить МастерДетайл виды в QuantumGrid v.4 через TADOQuery


1-59245
Arkan
2002-11-06 15:32
2002.11.18
Маша заболела ангиной!


6-59295
Random
2002-09-20 00:26
2002.11.18
Передача картинки по локалке


1-59248
kc-action
2002-11-06 22:32
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский