supernewbie, ты таки не оставил попытку написать свой delphi l2 сервер? Зачем тебе так много памяти в процессе? Даже java сборки довольствутся 3-4 ГБ даже с геодатой при маленьком онлайне. ))
эт на будущее, малоли, вдруг у меня там будет 100к онлайна!!!11
Добавлено через 42 секунды
Цитата:
Сообщение от alexteam
дай как догадаюсь... дллко просит поинтеры 4 байта.. а ты подсовываеш 8.
не, не в этом была проблема, почему-то в компиляторе нельзя Connected:=true; сделать а в самом процессе можно, забил на это
Добавлено через 2 часа 8 минут
происходит эксцепшн при вызове:
delphi Код:
var
ar:array [word] ofbyte;
procedure check(a:arrayofbyte; len:word);
beginend;
begin
check(ar,1000);
end.
а вот так не происходит:
delphi Код:
var
ar:array [word] ofbyte;
procedure check(const a:arrayofbyte; len:word);
beginend;
begin
check(ar,1000);
end.
в чем прикол?
__________________ Начало.
Последний раз редактировалось supernewbie, 17.11.2011 в 04:54.
Причина: Добавлено сообщение
supernewbie, Yegor, проблема скорее всего не в том что дельфи не может размер массива определить, а в том что в первом случае в стек будет положен весь массив ar, и в стеке по видимому не хватает места (хотя 65 килобайт по идее в него бы должно было поместиться достаточно спокойно), хотя без текста ошибки ничего сказать точно нельзя.
Вот никак не могу понять, почему народ как минимум пытающийся строить из себя программистов (я уж молчу про тех кто ими и является), когда просит помочь избавиться от ошибки, очень редко предоставляет текст ошибки. Ладно ещё когда текст ошибки это "Access violation...", он как правило ни о чем не говорит если нет стека вызовов, но блин ошибки часто и другие бывают, и весьма информативные...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
procedure check(const a:array of byte; len:word);
begin
end;
begin
check(ar,1000);
end.
мне когдато дестр надавал по шапке за то что в стек хлама кучу ложу.. теперь пытаюсь везде где это критично передавать "4 байта"
если ты не хочешь каждый раз при изменении длинны массива передергивать память то сделай хотябы воттак
delphi Код:
type
PData = ^TData;
TData = packedrecord len:word; data: array[word] ofbyte; end;
procedure check(p:pdata);
beginwhile someshitcounter < p^.lendo
dosomeshit(p^.data[someshitcounter]);
end;
var
ar : tdata;
begin
check(ar, 100)
ваще че это за C0000005 она часто че-то вылетает в местах где раньше все работало
Добавлено через 3 минуты
Цитата:
Сообщение от alexteam
мне когдато дестр надавал по шапке за то что в стек хлама кучу ложу.. теперь пытаюсь везде где это критично передавать "4 байта"
если ты не хочешь каждый раз при изменении длинны массива передергивать память то сделай хотябы воттак
delphi Код:
type
PData = ^TData;
TData = packedrecord len:word; data: array[word] ofbyte; end;
procedure check(p:pdata);
beginwhile someshitcounter < p^.lendo
dosomeshit(p^.data[someshitcounter]);
end;
var
ar : tdata;
begin
check(ar, 100)
но ведь если передавать через const\var то идёт тоже самое, ну т.е. передается только поинтер или нет?
__________________ Начало.
Последний раз редактировалось supernewbie, 17.11.2011 в 22:02.
Причина: Добавлено сообщение