Форум: "Начинающим";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
Внизработа с памятью Найти похожие ветки
← →
Andrey_ka (2008-11-10 17:24) [0]Удалено модератором
Примечание: СПАМ
← →
Palladin © (2008-11-10 17:27) [1]
> но она вставляет только сначала масива
то есть это move виновата?
← →
Сергей М. © (2008-11-10 17:31) [2]
> нужно вставить
Что значит "вставить" ?
← →
Сергей М. © (2008-11-10 17:33) [3]
> move, но она вставляет
Меня тоже не "вставляет" move(), меня "вставляет" вставлялка попроще и поочевидней:
PInteger(@MyArray[5])^ := i;
← →
Поросенок Винни-Пух © (2008-11-10 17:35) [4]var pb : PByte;
begin
pb := адрес массива;
inc(pb,смещение_пятого_от_начала);
Move(source,pb^,4);
← →
Andrey_ka (2008-11-10 17:37) [5]тип Integer состоит из 4 байт , вот я и хочу чтобы в масив были записаны эти байты. Если 1 переменная проблем нет, move справляется, а как вставить не сначала а с 5 байта ну или 8, неважно
← →
Palladin © (2008-11-10 17:44) [6]
> Andrey_ka (10.11.08 17:37) [5]
уже целых два ответа дали... первый красивше
← →
Andrey_ka (2008-11-10 17:49) [7]сори не замеил! спасибо
← →
Riply © (2008-11-10 19:51) [8]> [6] Palladin © (10.11.08 17:44)
> уже целых два ответа дали... первый красивше
Неа. На топиковый вопрос не дали ни одного,
ибо они не "вставляют" а записывают :)
← →
Сергей М. © (2008-11-10 20:01) [9]Вот и нашу Сашу (с) тоже "не вставляет" то что не вставляет)
← →
palva © (2008-11-10 20:01) [10]Да еще не раскрыт вопрос о порядке байтов в типе Integer. В конференции для начинающих на это невредно обратить внимание.
← →
Anatoly Podgoretsky © (2008-11-10 20:13) [11]> Сергей М. (10.11.2008 20:01:09) [9]
Что бы вставило надо правильные грибы использовать.
← →
Anatoly Podgoretsky © (2008-11-10 20:15) [12]
> palva © (10.11.08 20:01) [10]
Он стандартный и определен фирмой Интел и он простой, математически строгий - младшие байты по младшим адресам. С ним просто работать, в отличии от обратного порядка.
← →
Сергей М. © (2008-11-10 20:24) [13]
> Anatoly Podgoretsky © (10.11.08 20:13) [11]
Мало использовать правильные грибы - их еще надо и правильно использовать !
Иначе не вставит)
← →
Anatoly Podgoretsky © (2008-11-10 20:32) [14]> Сергей М. (10.11.2008 20:24:13) [13]
Но выбор первичен, неправильный выбор никакой повар/доктор не исправит.
← →
Andrey_ka (2008-11-12 14:18) [15]ответа всего 2 остальное пустой треп....
ни один из ответов полностью модернизировать под цели не смог, а цели такие:
нужны 3 процедуры или функции
первая процедура на подобии move записывает из одного
участка памяти в другой определенное количество байт
procedure CopyBytes(ps,pd:pointer;size:byte);
begin
move(ps^,pd^,size);
end;
она вроди работает коректно
вторая возвращает строку со значением каждого байта (через запяту)
Function BufInStr( const Source; count : Integer;Rozdel:char = ","):string;
var
S: PChar;
I: Integer;
begin
S := PChar(@Source);
result:="";
for I :=0 to count-1 do
result:=result+Rozdel+inttostr(ord(S[I]));
delete(result,1,1);
end;
и третья обратная второй
Function StrInBuf(s:string;Dest:pointer;Rozdel:char = ","):boolean;
var
b: PChar;
I: Integer;
ch:char;
s1:string;
begin
b := Dest;
result:=false;
while length(s)>0 do
begin
s1:=copy(s,1,pos(rozdel,s)-1);
delete(s,1,length(s1)+1);
ch:=chr(StrToInt(s1));
b[i]:=ch;
inc(i);
end;
result:=true;
end;
а вот с другими двумя проблема
пока в качестве параметров передаем числа вроди работает, но вот если
передаем элемент масива, то вторая функция бред выводит:(
помогите плз!
procedure TForm1.Button1Click(Sender: TObject);
var i:longint;
t:cardinal;
b:array of byte;
begin
t:=StrToInt(e1.text);
Label1.Caption:=BufInStr(t,4);
setlength(b,4);
BufInbuf(t,@b[0],4);
label2.Caption:="";
for i:=0to length(b)-1 do
label2.Caption:=label2.Caption+inttostr(b[i]);
BufInbuf(b[0],@i,4);
Label3.Caption:=inttostr(i);
caption:=BufInStr(b,4);
i:=0;
StrInBuf(Label1.Caption+",",@i);
Label4.Caption:=inttostr(i);
StrInBuf(Label1.Caption+",",@b[0]);
label5.Caption:="";
for i:=0to length(b)-1 do
label5.Caption:=label5.Caption+inttostr(b[i]);
ShowMessage(BufInStr(b,4));
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.064 c