Вопрос № 68826: Проффесилналы, кто нибудь знает как работать с файловой системы NTFS. Нужно давать разрешения группе пользователей Everyone читать и писать в определенную (не системную) директорию и ее поддиректории....Вопрос № 68838: Здравствуйте уважаемые!У меня вроде банальный вопрос,но что то в хелпе я его не нашёл.Допустим если у меня динамический массив SetLength(Mas,x); и мне надо циклом пройтись по числу элементов в массиве я пишу
for i:=0 to Length(Mas)-1 do begin....end;...Вопрос № 68852: Здравствуйте уважаемые эксперты и пользователи. Поздравляю всех с наступающим Новым годом. Желаю Вам в новом году счастья, здоровья, удачи и благополучия.
Может у кого-то из Вас есть пример написание индикатора уровня сигнала с входов звуков...
Вопрос № 68.826
Проффесилналы, кто нибудь знает как работать с файловой системы NTFS. Нужно давать разрешения группе пользователей Everyone читать и писать в определенную (не системную) директорию и ее поддиректории.
Отвечает: Gh0stik
Здравствуйте, Костенко Игорь Викторович!
Советую Вам воспользоваться командой cacls.
А запускать энту самую команду мы будем старым добрым ShellExecute().
В приложении смотрите пример использования....
Немного поясню:
в переменной pth - храним путь к нужной папке,
в переменной user - имя пользователя или группы..
Будут вопросы обращайтесь!!!
Да и напоследок маленькая справка по команде cacls:
Просмотр и изменение таблиц управления доступом (ACL) к файлам
CACLS имяФайла [/T] [/E] [/C] [/G имя:доступ] [/R имя [...]]
[/P имя:доступ [...]] [/D имя [...]]
имяФайла Вывод таблиц управления доступом.
/T Замена таблиц управления доступом для указанных файлов
в текущем каталоге и всех подкаталогах.
/E Изменение таблицы управления доступом вместо ее замены.
/C Продолжение при ошибках отказа в доступе.
/G имя:доступ Определение разрешений для указанных пользователей.
"доступ": R Чтение
W Запись
C Изменение (запись)
F Полный доступ
/R имя Отзыв разрешений для пользователя (только вместе с /E).
/P имя:доступ Замена разрешений для указанного пользователя.
"доступ": N Отсутствует
R Чтение
W Запись
C Изменение (запись)
F Полный доступ
/D имя Запрет на доступ для указанного пользователя.
Для выбора нескольких файлов используются подстановочные знаки.
В команде можно указать несколько пользователей.
Сокращения:
CI - Наследование контейнерами (Container Inherit).
ACE будет унаследован папками.
OI - Наследование объектами (Object Inherit).
ACE будет унаследован файлами.
IO - Только наследованное (Inherit Only).
ACE не будет применим к текущему файлу/папке.
Good Luck!!!
Приложение:
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 28.12.2006, 17:44
Вопрос № 68.838
Здравствуйте уважаемые!У меня вроде банальный вопрос,но что то в хелпе я его не нашёл.Допустим если у меня динамический массив SetLength(Mas,x); и мне надо циклом пройтись по числу элементов в массиве я пишу for i:=0 to Length(Mas)-1 do begin....end; ,а если массив двумерный SetLength(Mas,x,y); как пройтись циклами по нему.
И второй вопрос как удалить в процессе работы любой элемент динамического массива.
Отправлен: 27.12.2006, 18:32
Вопрос задал: Delphi-n (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Юрий Викторович
Здравствуйте, Delphi-n!
Как вариант цикл в цикле
SetLength(mas,x,y);
for i:=0 to x-1 do
for j:=0 to y-1 do
begin
....
end;
Ответ отправил: Юрий Викторович (статус: 1-ый класс)
Ответ отправлен: 27.12.2006, 19:08
Отвечает: Melamed
Здравствуйте, Delphi-n!
Я не уверен, что в Дельфи поддерживаются многомерные динамические массивы. Но если это
так, то я воспользовалься функциями Low и High. Смотрите приложение.
А вообще то, мой совет вам, пересмотреть Ваш алгоритм и постораться избавиться от многомерных
динамических массивов
Приложение:
Ответ отправил: Melamed (статус: 8-ой класс)
Ответ отправлен: 27.12.2006, 19:10
Отвечает: KiberZero
Здравствуйте, Delphi-n!
Динамические массивы тоже могут быть многомерными. Чтобы определить такой
массив, добавьте дополнительное описание array of для каждой дополнительной
размерности:
var
// Двумерный динамический массив целых чисел:
IA: array of array of Integer;
При выделении памяти для многомерного динамического массива функции
SetLength() следует передать дополнительный параметр:
begin
// IA будет массивом целых чисел размерностью 5 x 5
SetLength(IA, 5, 5);
Обращение к элементам многомерного динамического массива ничем не отлича
ется от обращения к элементам обычного массива:
IA[0,3] := 28;
В многомерных динамичнских массивах каждый элемент любого из n-1 измерений(n-количество измерений) представляет собой динамический массив и,следовательно нуждается в инициализации. Циклы в многомерных массивах используются так же, как и в одномерных.
Например,для трёхмерного массива код будет выглядеть так:
var
A:array of array of array of integer;
i,j:integer;
begin
SetLength(A,3);
for i:=0 to 2 do
begin
SetLength(A[i],3);
for j:=0 to 2 do
SetLength(A[i,j],3);
end;
и т.д.
end;
end.
Что же касается удаления,используется та же функция,что и для одномерных массивов Delete(var S: string; Index, Count: Integer).
Всё выше сказанное можно объединить:
Объявление
--------------------------------------------------------------------------------
Var
VarArray: array of array of array............
Установка длин
--------------------------------------------------------------------------------
SetLength (VarArray, Razmernost1); // У первого измерения
SetLength (VarArray[1], Razmernost2); // У второго измерения первой "строки"
SetLength (VarArray[2], Razmernost3); // У второго измерения второй "строки"
SetLength (VarArray[n], Razmernost4); // У второго измерения n-ной "строки"
SetLength (VarArray[1][1], Razmernost5); // У третьего измерения первой "строки" первого "столбца"
SetLength (VarArray[1][2], Razmernost6); // У третьего измерения первой "строки" второго "столбца"
SetLength (VarArray[n][m], Razmernost7); // У третьего измерения n-ной "строки" m-ного "столбца"
т.д.
Все можно изменять в процессе естественно.
Получение длин
--------------------------------------------------------------------------------
Razmernost1:=Length (VarArray); // У первого измерения (количество строк)
Razmernost2:=Length (VarArray[1]); // У второго измерения первой "строки" (количество столбцов)
Razmernost3:=Length (VarArray[2]); // У второго измерения второй "строки" (количество столбцов)
Razmernost4:=Length (VarArray[n]); // У второго измерения n-ной "строки" (количество столбцов)
Razmernost5:=Length (VarArray[1][1]); // У третьего измерения первой "строки" первого "столбца"
Razmernost6:=Length (VarArray[1][2]); // У третьего измерения первой "строки" второго "столбца"
Razmernost7:=Length (VarArray[n][m]); // У третьего измерения n-ной "строки" m-ного "столбца"
Обращение
VarArray[n][m][o][p][r]:=1; // :Integer // К элементу n-ной "строки",
m-ного "столбца",
// o-того "?",
p-того "?", r-того "?"
Обнуление (освобождение памяти)
--------------------------------------------------------------------------------
SetLength (VarArray, 0); // Всех сразу
Однако,хочу заметить,что не рекомендуется использовать параметры массива для функции SetLength более трёх.
Смотрите ещё один пример в приложении.
Удачи!
Приложение:
Ответ отправил: KiberZero (статус: 7-ой класс)
Ответ отправлен: 28.12.2006, 00:57
Отвечает: Sattar
Здравствуйте, Delphi-n!
Код в приложении.Думаю коментрариев не надо.
Приложение:
Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 31.12.2006, 15:27
Вопрос № 68.852
Здравствуйте уважаемые эксперты и пользователи. Поздравляю всех с наступающим Новым годом. Желаю Вам в новом году счастья, здоровья, удачи и благополучия.
Может у кого-то из Вас есть пример написание индикатора уровня сигнала с входов звуковой карты. В общем дуем в микрофон, а он «подпрыгивает».
Отправлен: 27.12.2006, 21:22
Вопрос задал: source (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: KiberZero
Здравствуйте, source!
Зачем что-то мудрить,если есть готовые компоненты.
Вот ссылки на два из них: