Главная страница
    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.009 c
14-59330
RV
2002-10-31 17:29
2002.11.18
Мобилы. SMS с них, на мыло. КАК?!? Если возможно.


14-59397
[NIKEL]
2002-10-30 01:10
2002.11.18
У кого есть сборники факов, интиресных статей по программингу?


1-59110
Part
2002-11-07 16:50
2002.11.18
Исключения


14-59373
Стрел
2002-10-29 23:22
2002.11.18
А нет ли здесь где-нибудь объяв О РАБОТЕ (постоянной)???


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