Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

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

 
allucard   (2007-11-08 13:55) [0]

Есть динамический массив.
К этому массиву нужно добавить 1 байт в начале и два байта в конце.
Как это проще всего сделать?

Как к нему через pointer или memorystream обращаться?


 
Johnmen ©   (2007-11-08 14:05) [1]

Массив чего? Розовых слоников?


 
Reindeer Moss Eater ©   (2007-11-08 14:07) [2]

только по новой распределять память


 
allucard   (2007-11-08 14:07) [3]

массив char (можно и byte)


 
allucard   (2007-11-08 14:08) [4]

динамический массив


 
Palladin ©   (2007-11-08 14:08) [5]

setlength(a,length(a)+3)
move(a[1],a[2],length(a)-3)


 
Palladin ©   (2007-11-08 14:09) [6]

move(a[0],a[1],length(a)-3)


 
allucard   (2007-11-08 14:10) [7]


> Palladin

да, забыл сказать что его нужно передать в процедуру, а с массивом не получается


 
Сергей М. ©   (2007-11-08 14:12) [8]


> его нужно передать в процедуру, а с массивом не получается


В процедуру можно передать все что угодно - хоть массив, хоть розовых слоников.


 
Dib@zol ©   (2007-11-08 14:12) [9]

Введи тип массива. Скажем, такой:

TMyMegaArr = array of Byte;

...

procedure ArrayProc(a:TMyMegaArr);
begin
end;

И передавай скока угодно... :)


 
allucard   (2007-11-08 14:37) [10]

Я обьявил и заполнил динамический массив.

могу я к нему обратиться как к массиву байт.

делаю так:

procedure TForm1.Button8Click(Sender: TObject);
var     g: integer;
    data: array of byte;
begin
setlength(data, 6);
data[0] := 11;
data[1] := 12;
mem:=data;
write_mary_trans(mem, 6, g);
end;

procedure write_mary_trans (mem: pointer; count: integer; var k: integer);
begin
k := (PByteArray(mem)[1]); //  Access violation
end;


 
Palladin ©   (2007-11-08 14:39) [11]

так он у тебя итак массив байт чего ты хочешь?


 
Сергей М. ©   (2007-11-08 14:40) [12]

какой нафих еще mem ?
Где объявление этого идентификатора ?


 
Dib@zol ©   (2007-11-08 14:46) [13]

> могу я к нему обратиться как к массиву байт.

Можешь.

function write_mary_trans (mem: pointer; count: DWORD):Byte;
asm
 PUSH EBX;
 MOV EBX, EAX;
 XOR EAX, EAX;
 MOV AL, BYTE PTR [EBX+EDX];
 POP EBX;
end;


 
Dib@zol ©   (2007-11-08 14:48) [14]

Впрочем, можно и проще.

function write_mary_trans (mem: pointer; count: DWORD):Byte;
asm
MOV AL, BYTE PTR [EBX+EDX];
end;


 
Dib@zol ©   (2007-11-08 14:49) [15]

плин.

function write_mary_trans (mem: pointer; count: DWORD):Byte;
asm
MOV AL, BYTE PTR [EAX+EDX];
end;

Ах да забыл сказать: count в данном случае обозначает элемент массива, к-рый нужно возвратить.


 
allucard   (2007-11-08 15:03) [16]


> Сергей М. ©   (08.11.07 14:40) [12]

mem: pointer


 
Сергей М. ©   (2007-11-08 15:20) [17]


> allucard   (08.11.07 15:03) [16]


Ну и нафих он нужен ?


 
Anatoly Podgoretsky ©   (2007-11-08 15:34) [18]


> массив char (можно и byte)

Если Char, то причем тут Byte


 
Anatoly Podgoretsky ©   (2007-11-08 15:37) [19]

Не трогай указатели, пока не поймешь их. В задаче нет нужды в указателях.


 
Slym ©   (2007-11-09 09:33) [20]

если заранее известно что будет 1 спереди и 2 сзади... проще их зарезервировать и не использовать, а потом делать все что угодно без фсяких распределения памяти и поинтеров


 
Slym ©   (2007-11-09 09:34) [21]

Slym ©   (09.11.07 9:33) [20]
1 спереди и 2 сзади

не нравится мне это :)


 
Anatoly Podgoretsky ©   (2007-11-09 09:59) [22]

> Slym  (09.11.2007 09:34:21)  [21]

Повернись


 
ЮЮ ©   (2007-11-09 10:09) [23]

>
> Повернись


Можно подумать что, когда двое спереди, а один сзади намного лучше, чем сабжевое 1 спереди и 2 сзади. Ноги клеить надо в обоих случаях :)


 
Anatoly Podgoretsky ©   (2007-11-09 10:47) [24]

> ЮЮ  (09.11.2007 10:09:23)  [23]

Броне трусы нужны



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

Текущий архив: 2007.12.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
15-1193824197
Jeer
2007-10-31 12:49
2007.12.02
Утилиты, макросы


15-1193809034
Flexer
2007-10-31 08:37
2007.12.02
Установка DevExpress на Delphi 7


2-1194417497
F@T@L_Err0r
2007-11-07 09:38
2007.12.02
TChart


2-1194375132
Lamer666
2007-11-06 21:52
2007.12.02
Как перебрать все объекты типа TEdit на форме??


2-1194521051
Neo
2007-11-08 14:24
2007.12.02
проблема с регистрацией БД





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