ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

04.04.2006, 19:27
|
|
Постоянный
Регистрация: 31.12.2005
Сообщений: 605
Провел на форуме: 4349433
Репутация:
661
|
|
определение к которому ты до*бался -- правильное
видать одну и ту же книжку читаете
|
|
|

04.04.2006, 20:03
|
|
Познающий
Регистрация: 08.12.2005
Сообщений: 35
Провел на форуме: 133219
Репутация:
-1
|
|
Сообщение от A110ut
видать одну и ту же книжку читаете
а какую книжку надо читать? ну или в какой книжке не будет написано, что массив упорядочн индексом... или что массив не имеет фиксированного количества элементов ... фиксированного хотя бы функцией СетЛеннз... хм... о чем ваще спор???
ps я ваще не дочилал статью... хватило на первых 2 предложения... ну просто коммент прочитал про массивы... не увидел там ошибок..
Последний раз редактировалось slime; 04.04.2006 в 20:07..
|
|
|

04.04.2006, 20:25
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Массив - это упорядоченный именованный набор из фиксированного количества однотипных данных.
глупейшее определение. Бывают массивы динамические, бывают массивы с элементами разных типов. Под это ламерское определение они не попадают.
определение к которому ты до*бался -- правильное
йух те в сокет ) чел прав.
Массив - это просто совокупность э-ов.
согласен.
А теперь перейдем к наиболее часто используемому циклу, и имя ему - "Перечень".
Перечень? Вроде по-русски он называется цикл со счетчиком.
но всеже, для общего развития, для того чтоб программа работала быстрее лутьше записать
2+2+2+2+2 чем 2*5
иногда лучше *ать, чем говорить
дальше не читал, ненавижу гнилой FormDriven код )
|
|
|

04.04.2006, 21:53
|
|
Познающий
Регистрация: 08.12.2005
Сообщений: 35
Провел на форуме: 133219
Репутация:
-1
|
|
[QUOTE=nerezus]глупейшее определение. Бывают массивы динамические, бывают массивы с элементами разных типов. Под это ламерское определение они не попадают.
[QUOTE]
мда...
если массив динамический это не значит что КОЛИЧЕСТВО ЭЛЕМЕНТОВ НЕ ФИКСИРОВАНО... эт значит что количество элементов задается НЕ ПРИ КОМПЕЛЯЦИИ, а после того как используется функция ГЕТМЕМ или СЕТЛЕНЗ... т.е. количество элементов ЗАДАЕТСЯ (фиксируется) динамически... и не более того ИМХО...
на счет того что элементы массива бывают разных типов... ммм... никогда не слышал об этом... тиресно нафих это нужно.
имхо САМОЕ ГЛАВНОЕ в массиве эт ТО, что он УПОРЯДОЧЕН ИНДЕКСОМ... эт значит, что за первым элементом идет второй, а за вторым третий, а за третим четвертый и т.д.
а то что ЭТ совокупность элементов... С ЭТИМ НИКТО И НЕ СПОРИТ. но это же не определение т.к. запись это тоже совокупность элементов... так если судить по вашим определениям запись ничем от массива не отличается.
ps Все выше написанное является моим мнением... я могу и ошибаться, т.к. я не считаю (в отличии от некоторых) что мое мнение единственно правильное. прошу не пинать. если я не прав, то поправте, но плиз кричать "ты лох, не фига не шаришь" не надо...
Последний раз редактировалось slime; 04.04.2006 в 22:02..
|
|
|

04.04.2006, 23:01
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
никогда не слышал об этом... тиресно нафих это нужно.
например для возврата значения ф-ии.
есть практически во всех языках сверхвысокого уровня.
|
|
|

04.04.2006, 23:16
|
|
Постоянный
Регистрация: 31.12.2005
Сообщений: 605
Провел на форуме: 4349433
Репутация:
661
|
|
я могу и ошибаться, т.к. я не считаю (в отличии от некоторых) что мое мнение единственно правильное. прошу не пинать
Пинать никто не будет. Я тоже много чего не знаю поетому в спорных случаях стараюсь промолчать а не упираться рогом в стену с пеной у рта доказывать (всем) свою (свою) правоту. А данный случай не спорный.
массива бывают разных типов... ммм... никогда не слышал об этом
без комментариев...
УПОРЯДОЧЕН ИНДЕКСОМ... эт значит, что за первым элементом идет второй, а за вторым третий, а за третим четвертый и т.д.
слышал ли ты об ассоциативных массивах?? хотя и так ясно......
если судить по вашим определениям запись ничем от массива не отличается
если тебе будет легче можешь считать массив структурированной записью (мне тоже смешно  )
и напоследок.. во-первых без обид, а во-вторых если ты выучил (выучил?) паскаль (например) ето не значит что он является универсумом и весь мир можно под него перекраивать. и при етом кричать людям, на сто порядков больше нас с тобой знающим кстати, что они не правы…
|
|
|

05.04.2006, 00:35
|
|
Новичок
Регистрация: 04.04.2006
Сообщений: 11
Провел на форуме: 26697
Репутация:
0
|
|
если массив динамический это не значит что КОЛИЧЕСТВО ЭЛЕМЕНТОВ НЕ ФИКСИРОВАНО... эт значит что количество элементов задается НЕ ПРИ КОМПЕЛЯЦИИ, а после того как используется функция ГЕТМЕМ или СЕТЛЕНЗ... т.е. количество элементов ЗАДАЕТСЯ (фиксируется) динамически... и не более того ИМХО...
slimeб, ты ошибаешься.
Почитай литературу.
По поводу разных типов:
Массивы могут быть не только разных типов, но можно также создавать массив с разным типом данных элементов.
Код:
function VarArrayCreate(const Bounds: array of Integer;
AVarType: TVarType): Variant;
var
I, LDimCount: Integer;
LVarArrayRef: PVarArray;
LVarBounds: array[0..63] of TVarArrayBound;
begin
if (not Odd(High(Bounds)) or (High(Bounds) > 127)) or
(not VarTypeIsValidArrayType(AVarType)) then
VarArrayCreateError;
LDimCount := (High(Bounds) + 1) div 2;
for I := 0 to LDimCount - 1 do
with LVarBounds[I] do
begin
LowBound := Bounds[I * 2];
ElementCount := Bounds[I * 2 + 1] - LowBound + 1;
end;
LVarArrayRef := SafeArrayCreate(AVarType, LDimCount, PVarArrayBoundArray(@LVarBounds)^);
if LVarArrayRef = nil then
VarArrayCreateError;
_VarClear(TVarData(Result));
TVarData(Result).VType := AVarType or varArray;
TVarData(Result).VArray := LVarArrayRef;
end;
function VarArrayOf(const Values: array of Variant): Variant;
var
I: Integer;
begin
Result := VarArrayCreate([0, High(Values)], varVariant);
for I := 0 to High(Values) do
Result[I] := Values[I];
end;
procedure _VarArrayRedim(var A: TVarData; HighBound: Integer);
var
VarBound: TVarArrayBound;
LVarType: TVarType;
LVarArray: PVarArray;
begin
if not GetVarDataArrayInfo(A, LVarType, LVarArray) then
VarResultCheck(VAR_INVALIDARG);
with LVarArray^ do
VarBound.LowBound := Bounds[DimCount - 1].LowBound;
VarBound.ElementCount := HighBound - VarBound.LowBound + 1;
if SafeArrayRedim(LVarArray, VarBound) <> VAR_OK then
VarArrayCreateError;
end;
|
|
|

05.04.2006, 02:11
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
слышал ли ты об ассоциативных массивах?? хотя и так ясно.....
Я же говорю, что делает делфи с людьми. Массив - сам по себе, без всяких высокоуровневых хреновин - просто набор. Динамический, статический - никакого знаения не имеет, кто отделил под него память-загрузчик карты бинарника или процесс)
если массив динамический это не значит что КОЛИЧЕСТВО ЭЛЕМЕНТОВ НЕ ФИКСИРОВАНО... эт значит что количество элементов задается НЕ ПРИ КОМПЕЛЯЦИИ, а
после того как используется функция ГЕТМЕМ или СЕТЛЕНЗ... т.е. количество элементов ЗАДАЕТСЯ (фиксируется) динамически... и не более того ИМХО...
Гетмем? Не видел такой ф-ии в kernel32.dll. К слову, GlobalAlloc, GlobalFree, VirtualAlloc, VirtualAllocEx, и ещё пару ф-ий. Эти ф-ии выделяют память, после чего ее можно использовать. Если у тебя уже выделеные блоки памяти, это тоже массивы. Байтов, WORD'ов, DWORD'ов. Массив размещается в стеке:
Код:
void Func( void )
{
BYTE block[10];
BYTE block[] = "...";
BYTE block[5] = "1234"; // после всего будет 0x00
...
}
Код:
так если судить по вашим определениям запись ничем от массива не отличается.
ничем.
и вообще, какая запись? БРОСАЙ ДЕЛФИ СРОЧНО.
на счет того что элементы массива бывают разных типов
помидоры, которые я продаю тоже есть разных типов. Но все они - помидоры.
Так и тут - все байты. Если ты отделишь память под 10 эл-ов массива, каждый - структура
struct s
{
DWORD a;
DWORD b;
}
То, у тебя будет (sizeof( DWORD ) * 2 ) * 10. Смысл в этом. Остальное делает компилятор. Открой свою прогу отладчиком и посмотри что генерируется. Все можно сделать вообще без стуктур и массивов, просто используя указатель на выделеный блок, размера (sizeof( DWORD ) * 2 ) * 10
глупейшее определение. Бывают массивы динамические, бывают массивы с элементами разных типов. Под это ламерское определение они не попадают.
Наверное мы говорим о разных массивах. Я-о естественных для меня, а ты, о каких-нибудь в питоне, перле или тому подобное)) На самом деле, из всего что я сказал, следует что массив всегда имеет один размер, только из-за того, что пока указатель на его N'ный эл-т не попадет в невыделеную область или ещё хрен знает куда, что просто вызовет исключение. Можно использовать 5 эл-т массива, хотя определно всего 2 )
BYTE test1, test2;
BYTE arr[2];
BYTE test1, test2;
пожалуйста, используй, например, arr[3] )
только такого компилятор недопустит... так что надо не явно указывать...
например для возврата значения ф-ии.
ф-ия возвращает значение - это значит, она в AX/EAX записала число
Последний раз редактировалось KEZ; 05.04.2006 в 02:18..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|