Вниз
Скачать: CL | DM;

buf[0..2048]array of byte и buf array of bute;setlength(buf,204   Найти похожие ветки 

← →
redlord   (2004-10-12 19:24) [0]

всем привет
народ объясните в чом разница между
buf[0..2048]array of byte
и
buf array of bute;setlength(buf,2048);
в первом случае все работает а во втором ошибка при обращении к адресу (при попытке использовать масив)


← →
SammIk ©   (2004-10-12 19:26) [1]

А потомучто bute))


← →
SammIk ©   (2004-10-12 19:27) [2]

А код есть?
Может ты используешь больше чем выделил


← →
begin...end ©   (2004-10-12 19:28) [3]

SetLength(buf, 2049);

?


← →
Суслик ©   (2004-10-12 19:29) [4]

привет разничу обяснить не смогу т к не знаю на каком языке ты пишеш а также незнаю какие ты принимаш попытки к спользованию масива если ты пишеш на дельфи то думаю что имело бы смысл написать вопрос окуратней без ошибок очепаток и прочей лабуды это как минимум привлечет внеманее к твоему вопросу и не будет выглядеть так отвратительно как сейчас по сути вопроса я пому предположить что в первом случае ты имел в виду массив а во втором динамический массив разница между этими конструкциями огромна думаю для начала надо почитать хелп привести код как ты используеш эти масивы главное понять что динамические массивы это по сути укозатель


← →
begin...end ©   (2004-10-12 19:32) [5]


> [4] Суслик ©   (12.10.04 19:29)

Вижу, Вы Думу не послушались, употребили чего-то ;-))


← →
SammIk ©   (2004-10-12 19:34) [6]

Бобрик- Это конечно так(указатель), но делфя берет на себя все это.
И програмеру не показывает это, НО из-за того, что это
указатель и возникают ошибки писанины ни туда.
Просто нужно чувак(redlord) следить за тем куда ты пишешь.
Я предпологаю что у тебя есть нечнто вроде:
buf array of bute;
...............
setlength(buf,2048);
................
for i:=0 to 5000 do<< Внимание сюда!!! Нет у тебя стольких элиментов
..............


← →
SammIk ©   (2004-10-12 19:36) [7]

А насчет вопроса, сусел конечно прав.
Жутко написано, если на листе такая бадяга, то что в голове?


← →
Суслик ©   (2004-10-12 19:36) [8]


>  [5] begin...end ©   (12.10.04 19:32)

а тебя такое небрежное отношение к постановке вопроса не заимало?


← →
SammIk ©   (2004-10-12 19:37) [9]

Да, кстати если  сдесь
buf:array[0..2048] of byte;
...............
................
for i:=0 to 5000 do

Компилятор будет ругатся, то во втором случае НЕТ


← →
Суслик ©   (2004-10-12 19:37) [10]


>  [7] SammIk ©   (12.10.04 19:36)

сусел!!
Это будет эволюция моего ника.

Зарекся я уже людей воспитывать, но не всегда удерживаюсь.


← →
Суслик ©   (2004-10-12 19:38) [11]


> Компилятор будет ругатся

Не будет - все новички уже ассы - у них никогда range check error не включен


← →
SammIk ©   (2004-10-12 19:39) [12]

Наверное НЕ Воспитывать?


← →
Суслик ©   (2004-10-12 19:39) [13]


>  [12] SammIk ©   (12.10.04 19:39)


> Наверное НЕ Воспитывать?

Да, наверное. Как будет угодно.


← →
SammIk ©   (2004-10-12 19:40) [14]

Серьезно?
А голова на что? Разве не упомнит? А?


← →
SammIk ©   (2004-10-12 19:41) [15]

Какои поддатливый


← →
Суслик ©   (2004-10-12 19:43) [16]


> Какои поддатливый

Да меня тут затюкали с моим русским языком. Вот и поддаюсь, чтобы не спорить.

------------------
Автору.
Пока вопрос нормально не поставишь, хрена лысого тебе кто-то что-то дельное ответит.


← →
SammIk ©   (2004-10-12 19:50) [17]

Балбес автор(это справедливо), и скорее(100%) просто вышел за границы. Так что проверяи, а нам скажи был ли я прав. Так интересно узанть.
2 {16} Думаешь совет не поможет?)


← →
Суслик ©   (2004-10-12 19:51) [18]


> 2 {16} Думаешь совет не поможет?)

нет


← →
begin...end ©   (2004-10-12 19:53) [19]


> [8] Суслик ©   (12.10.04 19:36)


> а тебя такое небрежное отношение к постановке вопроса не заимало?

Расслабьтесь ;-)

Автора нету. Может, случилось чего?


← →
SammIk ©   (2004-10-12 19:54) [20]

Автор, разьясните нашь спор. Уже просто очень интересно.
Дорогой сосел, как Вы думаете, что может быть акромя этого.
В данной(есесно) ситуации?


← →
begin...end ©   (2004-10-12 19:57) [21]

Ставлю на выход за границы в виде: 2048 вместо 2049.


← →
Суслик ©   (2004-10-12 19:58) [22]


> Дорогой сосел, как Вы думаете, что может быть акромя этого.
> В данной(есесно) ситуации?

за сосла в глаз :)) шутка, ну вы поняли.

Может быть например такое:
move(buff, .., 2048)
В первом случае будет все нормально.
Во стором вероятен AV


← →
SammIk ©   (2004-10-12 19:59) [23]

Может на оборот? 2049 вместо 2048? Я про тоже.
Поздравляю, в нашем полку любопытствующих прибыло!!
-
А автор, походу умыл руки.
Ты не стесняйся, мы не обидем. Нам интересно!!


← →
SammIk ©   (2004-10-12 20:01) [24]

И в-первом и во-втором стоит писать @buff.
Если мне не изменяет память, Вы уж судари простите, но
я за делфеи не сидел ужо пол года.


← →
begin...end ©   (2004-10-12 20:01) [25]


> [23] SammIk ©   (12.10.04 19:59)


> Может на оборот? 2049 вместо 2048?

Ну это смотря с какой стороны посмотреть ;-) Короче, Автор: 2048 <> 2049.


← →
SammIk ©   (2004-10-12 20:03) [26]

Не, скорее всего выделил он 2048, но где-то решил заглянуть дальше.
А хотя кто его знает)


← →
Суслик ©   (2004-10-12 20:03) [27]


>  [24] SammIk ©   (12.10.04 20:01)

еще как изменяет вам память.
Неверная....


← →
SammIk ©   (2004-10-12 20:05) [28]

мож я ее с movememory спутал


← →
jack128 ©   (2004-10-12 20:12) [29]

SammIk ©   (12.10.04 20:03) [26]
а почему со стат массивом нормально проходит??? Мне импанирует вариант с Move(buf, ..); это классическая ошибка при работе с дин массивами, строками...


← →
jack128 ©   (2004-10-12 20:15) [30]

jack128 ©   (12.10.04 20:12) [29]

ну то есть не обязательно Move, любая функция, где используются не типизированные параметры..


← →
SammIk ©   (2004-10-12 20:15) [31]

Тогда второй вариант, выделил, гад, меньше чем нам сказал!!!
Обманывает он нас!!!


← →
SammIk ©   (2004-10-12 20:16) [32]

Маиби


← →
SammIk ©   (2004-10-12 20:17) [33]

У меня аж трубка погасла, пока я тут постил!(


← →
Суслик ©   (2004-10-12 20:18) [34]


>  [33] SammIk ©   (12.10.04 20:17)

ты кочегарь, кочегарь анашу. Жалко, если пропадет.


← →
SammIk ©   (2004-10-12 20:20) [35]

Опиум, курю я. Опиум!


← →
GEN++ ©   (2004-10-12 20:28) [36]

Автора темы - в студию!


← →
jack128 ©   (2004-10-12 20:29) [37]

Мдя.. Какое пиво?.. Тут опиум курят в обществ. местах. Форум - это ведь общественое место?


← →
SammIk ©   (2004-10-12 20:30) [38]

НЕ в студию, а к стене. Все скажет в "последнем слове")


← →
redlord   (2004-10-12 20:39) [39]

сори за длительное отсутствие
за очепятки тоже извентиляюсь :-)
(выше тройки по русскому у меня никогда не было)
цыкл в работе изпользуется

Fin:=tfilestream.Create(info[FnTotal].f,$0);//fmOpenRead);
 info[Fntotal].s:=Fin.Size;
  for n:=1 to Fin.size div 2048 do
 begin
 Fin.ReadBuffer(buf, 2048);  
 blockwrite(Fout,buf,2048,donewrite);
 application.ProcessMessages;
 end;
 Fin.ReadBuffer(buf,Fin.size mod 2048 );
 blockwrite(Fout,buf,Fin.size mod 2048,donewrite);
 application.ProcessMessages;
 Fin.Free;
...
closefile(Fout);
паток применен для возможности копирования самого себя.
вся эта каша применяется в проге паковщика файлов с возможностью само распаковки


← →
jack128 ©   (2004-10-12 20:44) [40]

redlord   (12.10.04 20:39) [39]
blockwrite(Fout,buf,2048,donewrite);

Я угадал!!! :-)

blockwrite(Fout,buf[low(buf)],2048,donewrite);



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

Скачать: CL | DM;



Память: 0.54 MB
Время: 0.028 c
1-1097183857
Justas
2004-10-08 01:17
2004.10.31
Массив в файл


14-1097498534
Comp
2004-10-11 16:42
2004.10.31
Сабж


8-1091357257
Роман
2004-08-01 14:47
2004.10.31
Построение геом. фигур в 2-х мерном массиве


14-1097657094
klerk
2004-10-13 12:44
2004.10.31
Ссылка в Excel


14-1097499849
quickblack
2004-10-11 17:04
2004.10.31
Порты для интернета




   Наверх