Вопрос № 31492: Подскажите, пожалуйста, как можно хранить пароли и текст так, чтобы пользователи не могли это посмтореть или изменить, однако чтобы моя программа могла это делать?...Вопрос № 31495: Здрасвуйте! Мне необходимо создать базу данный, только не стандартную, а свою. Поэтому вопрос: как лучше хранить информацию в файлах? И где можно прочитать больше информации про алгоритмы шифрования данных?...Вопрос
№ 31496: Здравствуйте!
Как можно программно удалить какой-нибудь файл без лишних вопросов(вроде "Действительно хотите удалить такой-то файл")
..Вопрос № 31509: Здравствуйте!
Подскажите, пожалуйста. Прочитал что процедура read читает файл с числовыми зачениями без пробелов, и признаков конца строки. Так ли это? Т.е если у меня в фале записаны числа:
12 13
19 46
18 46
То вид программы: ...Вопрос № 31517: Подскажите, пишу программу сохранения данных, введенных в таблицу. Файл res.txt не создается...данные не сохраняются...
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(f, 'res.txt');
Rewrite(f);
with Strin...Вопрос № 31525: Здравствуйте!
Как заполнить StringGrid если я не знаю заранее количество элементов.
Т.е. сколько пользователь введет значений, столько и будет использоваться при расчете.
var
Form1: TForm1;
f:TextFile;
i:integer;
s:ar...
Вопрос № 31.492
Подскажите, пожалуйста, как можно хранить пароли и текст так, чтобы пользователи не могли это посмтореть или изменить, однако чтобы моя программа могла это делать?
Отправлен: 14.12.2005, 20:16
Вопрос задал: Segor (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Segor!
Можно использовать обычный текстовый файл, только установить права на него, чтобы в него заглядывать могли только Вы. Этой возможностью обладают файловая система ОС WinNT и выше под названием NTFS.
9х в этом отношении - полный отстой. FAT32 - тоже самое.
Как дополнительная мера, пароли можно шифровать. Простейший метод шифрации - с помощью операции XOR. Про более сложные методы - пожалуйста в Яндекс или Гугл.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 14.12.2005, 20:29
Отвечает: Лучников Юрий Владимирович
Здравствуйте, Segor!
Чтобы не могли посмотреть - используйте криптографию.
Чтобы не могли изменить - использовать контрольную сумму, например CRC32.
Используй шифрование, чтобы не могли посмотреть, а чтобы проверить, были ли данные изменены или нет - проверяй контрольную сумму (CRC32).
О защите информации можешь посмотреть в интернете - документации навалом (воспользуйся поисковиком).
--------- Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и в перед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 14.12.2005, 20:56
Отвечает: Татьяна
Здравствуйте, Segor!
Я делала так, использовала левую ветку реестра (обычно какую-нибудь системную, никак не связанную с вашей программой, но которая точно существует - это для того, чтобы не могли изменить, т.е. конечно могут, но для этого надо найти) и записывала туда зашифрованные данные (это для того, чтобы не посмотрели, если найдут). Если необходимо прислать, как работать с реестром, пишите на внутреннюю почту
--------- Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 10-ый класс)
Отправлен: 14.12.2005, 21:35
Отвечает: Архангельский Андрей Германович
Здравствуйте, Segor!
Есть компонент DataFile, который работает также как файл .ini, но при этом имеет больше типов данных и шифрует файл данных, весит 20к, если хочешь вышлю
Отвечает: Schmak
Здравствуйте, Segor!
Ну уж совсем запретить просмотр я думаю будет сложно, но что мешает Вам шифровать сохраняемые данные. Хотя конечно не помешает сделать защиту от удаления файла с паролями. Типа если удалили файл, то прога не запускается.
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 15.12.2005, 05:46
Вопрос № 31.495
Здрасвуйте! Мне необходимо создать базу данный, только не стандартную, а свою. Поэтому вопрос: как лучше хранить информацию в файлах? И где можно прочитать больше информации про алгоритмы шифрования данных?
Отправлен: 14.12.2005, 20:59
Вопрос задал: 007Makc (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: nimoid
Здравствуйте, 007Makc!
Ууу.... создать свою БД не так то и просто. Хотя... смотря для каких целей. Чем больше в вопросе информации, тем более точным будет ответ. ;-)
Давай я тебе приведу пример, как можно использовать простенькую "свою БД" ну скажем, для простенького тел. справочника, может тебе это и подойдет - см. приложение (но в этом варианте данные должны иметь строго определенную длину - не могут быть к примеру классом, длинной строкой, указателем или объектом).
Про алгоритмы шифрования данных ищи в интернете через поисковики. Их лучше всего реализовывать на ассемблере - наверно понятно почему. ;-) Или возьми готовые компоненты - их тоже много в инете.
Приложение:
--------- Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и в перед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 15.12.2005, 03:32 Оценка за ответ: 5 Комментарий оценки: Спасибо, незнал что в файл (File of type) можно заносить несколько зиписей.
Отвечает: sir henry
Здравствуйте, 007Makc!
А стандартной базы данных и не бывает в принципе. Стандартный только формат хранения данных. Пожалуйста, переформулируйте фопрос и напишите, что именно Вы хотите сделать.
Про алгоритмы шифрования Вы можете прочитать, набрав в строке поиска в Яндексе или Гугле "алгоритмы шифрования".
Ответ отправил: sir henry (статус: Академик)
Отправлен: 15.12.2005, 04:49 Оценка за ответ: 2 Комментарий оценки: В вопросе и спарашивается про стандарты хранения информации.
Вопрос № 31.496
Здравствуйте!
Как можно программно удалить какой-нибудь файл без лишних вопросов(вроде "Действительно хотите удалить такой-то файл")
Отправлен: 14.12.2005, 21:01
Вопрос задал: Dimon007 (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ataman N. N.
Здравствуйте, Dimon007!
Есть такая функция DeleteFile(FileName:String):Boolean;
Возвращает истину в случае удачного удаления.
При этом с удаляемого файла должен быть снят атрибут "только для чтения".
Ответ отправил: Ataman N. N. (статус: 4-ый класс)
Отправлен: 14.12.2005, 21:12
Отвечает: sir henry
Здравствуйте, Dimon007!
Нет ничего проще. Для этого используется функция:
DeleteFile(Имя_файла);
Ответ отправил: sir henry (статус: Академик)
Отправлен: 15.12.2005, 04:51
Отвечает: Schmak
Здравствуйте, Dimon007!
При помощи функции DeleteFile(filename:string)
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 15.12.2005, 05:46
Отвечает: Golden Spider
Здравствуйте, Dimon007!
Есть функция DeleteFile(FileName:String) она возвращает True если файл успешно удалён, но не хочет удалять файлы с меткой "только чтение".
--------- Семь раз проверь, один раз откомпилируй!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 15.12.2005, 22:08
Вопрос № 31.509
Здравствуйте!
Подскажите, пожалуйста. Прочитал что процедура read читает файл с числовыми зачениями без пробелов, и признаков конца строки. Так ли это? Т.е если у меня в фале записаны числа:
12 13
19 46
18 46
То вид программы:
var
Form1: TForm1;
F:TextFile;
M:array [1..6] of real;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile (F,'prog.txt');
Reset(f);
i:=1;
while not EOF (F) and (i<=2) do
begin
Read(F,M[i]);
inc(i);
end;
CloseFile(F);
end;
Даст мне массив M:={12 13 19 46 18 46}?????????????
Кроме того вопрос реализации: при прогонке этой программы выдается ошибка: файл не найдем. Файл записан в том же катологе, что и исполняемый модуль, имеет то же имя:prog.txt . В чем ошибка?????????
Заранее спасибо
Отправлен: 14.12.2005, 22:56
Вопрос задал: Lazut4ik (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Lazut4ik!
Вроде все правильно. Почему файл не найден, непонятно, раз файл существует (если он и в самом деле существует). Единственное, что можно предположить - Вы неправильно пишите имя файла. Попробуйте проверять его существование с помощью функции FileExists().
Ответ отправил: sir henry (статус: Академик)
Отправлен: 15.12.2005, 04:56
Вопрос № 31.517
Подскажите, пишу программу сохранения данных, введенных в таблицу. Файл res.txt не создается...данные не сохраняются...
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(f, 'res.txt');
Rewrite(f);
with StringGrid1 do
begin
for i := 0 to ColCount - 1 do
for k := 0 to RowCount - 1 do
Writeln(F, Cells[i, k]);
end;
CloseFile(F);
end;
После нажания F9 просто ввожу данные в таблицу и нажимаю Button1, что делаю не правильно?
Все верно. Только неизвестно как у тебя объявлена переменная F. Должна быть как var F: TextFile;
И еще... попробуй вместо AssignFile(f, 'res.txt'); написать AssignFile(f, ExtractFilePath(ParamStr(0)) + 'res.txt');
(возможно файл и создается, но в другом месте - такое бывает при смене текущего каталога программой... но это уже другая история ;-))
--------- Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и в перед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 15.12.2005, 04:33
Отвечает: sir henry
Здравствуйте, Артемова Марина!
Вам нцжно объявить переменные i и k, как вообще можно работать с необъявлеными переменными мне непонятно. :)
Все остальное вроде правильно. Файл должен создаваться в том же каталоге, где и программа лежит.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 15.12.2005, 05:04
Отвечает: Denisss Здравствуйте, Артемова Марина!
А какая, при этом, возникает ошибка?
Может в действительности файл создается, только не в папке, где программа, а в папке, из которой запущена программа (через ярлык, например).
лучше использовать так: AssignFile(f, ExtractFilePath(ParamStr(0)) + 'res.txt');
тогда файл будет точно создаваться в папке программы.
Кроме того, я бы не рекомендовал использовать глобальные переменные в этой процедуре. Объявите переменные f, i, k локально.
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 15.12.2005, 08:30
Вопрос № 31.525
Здравствуйте!
Как заполнить StringGrid если я не знаю заранее количество элементов.
Т.е. сколько пользователь введет значений, столько и будет использоваться при расчете.
var
Form1: TForm1;
f:TextFile;
i:integer;
s:array of extended;
implementation
procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
assignfile(f,SaveDialog1.FileName);
rewrite(f);
SetLength(S,StringGrid1.RowCount-1);
for i:=1 to StringGrid1.RowCount-2 do
begin
S[i]:=StrToFloat(StringGrid1.Cells[0,i]);
writeln(f,S[i]:0:3);
end;
closefile(f);
end;
end;
Данная программа работает, но число строк здесь фиксированно при зраработке программы через свойство RowCount. Как этого избежать?
(Если это не то, объясни в мини-форуме данного вопроса - постараюсь ответить)
--------- Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и в перед... )
Ответ отправил: nimoid (статус: 6-ой класс)
Отправлен: 15.12.2005, 08:17
Отвечает: sir henry
Здравствуйте, Артемова Марина!
А Вам никто не мешает ввести количество строк в уже работающей программе после того, как будет это количество известно.
TStringGrid.RowCount:=Количество_которое_Вам_стало_известно;
Только учтите, что самая первая строчка - это строка заголовков столбцов.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 15.12.2005, 09:13