Автор Maxic задал вопрос в разделе Другие языки и технологии
SetLength - вызов процедуру затрагивает элементы чужого массива и получил лучший ответ
Ответ от А[гуру]
for i:=0 to CN do //здесь должно быть CN-1, т. к. setlength выделяет память с учетом нуля, т. е. setlength(A,3) создает массив с элементами от 0 до 2. По поводу присвоения динамических массивов: B := A; - здесь произойдет копирование ссылки на массив, а не его элементов, т. е. при изменении массива В изменится массив А. Чтобы произвести копирование, придется выделить память для В и с помощью цикла скопировать элементы. В самой процедуре я ничего особого не увидел, в этом примере процедура вообще не выполняет никаких действий по преобразованию массива, возможно ошибка где-то в другом месте (это полный код программы?) .
procedure SortCount(var A:TSortArr;n,k:integer); var B,Count:TSortArr; begin B := A; SetLength(Count,k); end; С переданной A, и назначенной Count - ничего дальше не делается, то есть после завершение процедуры, они пропадают
так и должно быть, потому что var Поведение без var зависит от версии дельфи, в старых тоже изменит оригинал, потому что там у динамических массивов нет счетчика ссылок
ПАСКАЛЬ ABC :Не могу вызвать SetLength для операнда данного типа
Вот это вот
begin
setlength(mas[i],m);
end;
что ты делаешь?
подробнее...
Советы девушкам. Как выглядеть на миллион.
Vse chto vi skazali sdelaet devushku opratnoy i ne vulgarnoy... No eto ne pokazet ee status i daze
подробнее...
Киньте плиз примерчик, как имя исполняемого файла с помощью GetModuleFileName в Дельфи выудить.
Например:
-----------
var
wStr : string;
wNSize : LongWord;
hModule
подробнее...
delphi - как написать функцию, которая возвращает массив?
Опиши свой ТИП динамического массива. Тогда проще:
type
RealArray = array of
подробнее...
Delphi как сделать так, чтоб результатом функции был двумерный массив
Для начала создадим новый тип данных:
type
TArray2x = array of array of
подробнее...
Как из массива удалить элемент?
Судя по твоим предыдущим вопросам, язык Паскаль. Ну так вот, для обычного массива это невозможно.
подробнее...
Подскажите по делфи, TMemoryStream не могу считать массив...
Вы пишете откровенную ересь. Для Delphi имеется шаблонный механизм сериализации (запись/чтение в
подробнее...
как задать массив?
При таком описании границы указывать обязательно. Можно написать переменную n, но с условием, что
подробнее...
Как изменит системную переменную Path с помощью delphi?
Для этого используется API функция GetEnvironmentVariable.
GetEnvironmentVariable
подробнее...
Что значит код ошибки 5, возвращаемый функцией GetLastError?
Используйте следующую функцию, для определения описания ошибки:
function GetLastErrorText:
подробнее...
Организовать ввод одномерного массива
Вот что удалось найти
Динамические массивы в Паскале. Динамические массивы в Паскале не имеют
подробнее...
Как задать массив в Delphi?
<название>:array[размерность] of <тип>
Например: m:array[1..5000] of integer -
подробнее...
Реализовать в Delphi организацию работы СТЕКА.
Ну как минимум стараться передавать в процедуры и функции не переменные а указатели на них... в
подробнее...