![Фотография](https://vse.kz/public/style_images/osnovnoi34/profile/default_large.png)
Delphiпомощь, консультация
#108
Отправлено 28.05.2010, 19:38:53
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Procedure TForm1.Button1Click(Sender: TObject); Var F:TextFile; // указатель на текстовый файл Begin AssignFile(F,'c:\1.txt'); // привязка названия к переменной {$I-} Append(f); // открыть файл для добавления if IOResult<>0 then // если ошибка открытия (файла нет к примеру) begin {$I-} Rewrite(F); // создать новый файл WriteLn(F,'Привет'); // запись в файл строки {$I+} end; CloseFile(F); // закрыть файл end;Ну и в команде WriteLn(F,'Привет'), слово привет заменить на то что нужно запихнуть в файл... например если вы используете компонент TEdit и называется он Edit1, то напишите Edit1.Text.
P.S. Непонятно зачем Вам вообще пароли в файлы запихивать, не надежно это...
Сообщение отредактировал Tapochki 3D: 28.05.2010, 19:43:08
#111
Отправлено 01.06.2010, 21:58:23
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
если для вас слово "безопасность" на последнем месте и вы делаете это только для того чтобы при повторном запросе эти поля не заполнять, то хранить это можно в любом файле (ini. txt ит.д. ) или реестречет не могу понять как написать програмку в дельфи такую.
чтобы она запрашивала логин и пароль. потом его копировала в какую нить папку.
вот уже запарился. нет перешерстил не могу понять как это сделать.
может кто поможет?
а если все таки нужна хоть какая то "безопасность", то можно при сохранении - шифровать логин и пароль, а при повторном использовании - дешифровать. Чтобы никто не смог прочитать напрямую этот файл.
Можно конечно хранить все это в базе данных, но лучше всего никаких следов логина и пароля на локальном компьютере не оставлять - приучайте юзеров, что это в их интересах. Вон в windows server 2008 по умолчанию ваще политика паролей усложнена (минимум 8, и чтобы были обязательно символы в разных регистрах и обязательно цифры)
Информация это деньги. Утчечка информации - это всегда огромная потеря.
#113
Отправлено 09.06.2010, 10:22:24
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
я мозг себе поломаю.
вобщем то что вы мне помогли это супер. тока вот загвоздка.
кнопка сохраняет только слово которое уже заранее прописано
а как можно сделать это
я не могу понять как получить procedure TPasswordDlg.FormCloseQuery(Sender: TObject;
var CanClose: Boolean); как она появилась?
не могу понять уже мозг кепит.
мне надо просто сделать програмку самуя простую
чтобы она могла определить логин, пароль. и сохранить пароль и логин.
и если логин или пароль не правильны то она не пускает. просто окошко надо.
я уже замучался.
если можете плиз помогите.
заранее спасибо
Сообщение отредактировал плахиш: 09.06.2010, 12:06:03
#114
Отправлено 09.06.2010, 17:57:53
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
В вашей ссылке показано, что в случае неправильного пароля - происходит Application.Terminate;
Но по моему - это неудобно, когда при каждой ошибке будет закрываться приложение.
предлагаю след. последовательность:
1.Сначала создаете динамически диалоговое окно с вводом логина и пароля
2.При неправильном пароле не нужно закрывать приложение, а просто сообщение, что имя или пароль неправльны. Здесь обычно производится попытка соединения с БД. Можете дать 3 попытки, а после 3 неудач - можете закрыть приложение. При правильной попытке - это диалоговое окно удаляется FreeAndNil(PasswordDlg) и создается главное окно
3.А как сохранить логин и пароль описано выше уже
Т.к. вы используете модальное окно, то кроме обработки события OnFormCloseQuery, можно еще обрабатывать значение ModalResult: при правильном пароле присваиваете ModalResult:= mrok и форма закрывается (лучше уничтожить ее потом). Кнопка "ОК" должна иметь ModalResult:= None в данном случае. Вторую кнопку "Cancel" лучше сразу поставить статус ModalResult:= Cancel, при нажатии которой форма и приложение сразу закрывается
#118
Отправлено 11.06.2010, 10:02:29
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
да там все просто. просто я еслиб на 1м курсе 5 лет назад с преподом не подрался по дельфи. может бы мой пыл в изучении не пропал. а так как он меня потом гнобить начал. увы.
аха все получил ))
спс
попробую пропихнуть эту прогу преподу )))
должно прокатить![]()
спасибо
Учил бы лучше. Вот так вот и заказчику будешь "пропихивать" свои труды. Хоть бы разобраться попыталси чтоли.
я понимаю. тока вот трудно вспомнить что за чем идет.
так то простенькое написать могу. а вот сложное что то это пока трудно.
щас снова взялся за изучение
учусь ))) как говорится вспомнить все
![:weep:](http://vse.kz/public/style_emoticons/default/smirk.gif)
#120
Отправлено 11.06.2010, 23:26:57
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Memo1: TMemo;
GroupBox2: TGroupBox;
Edit1: TEdit;
XPManifest1: TXPManifest;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TKeyWord = record
key,answer : string;
end;
const AnswersCount = 310;
var
GeneratedFraza : string='';
Answers : array [1..AnswersCount] of TKeyWord;
Dialog : array [1..20] of string;
Hi : array [1..7] of string;
Form1: TForm1;
implementation
{$R *.dfm}
function FindAnswer(text : string) : boolean;
var
i,count : integer;
ans : array [0..10] of integer;
begin
count:=0;
for i:=1 to AnswersCount do
begin
if Answers[i].key=text then
begin
ans[count]:=i;
inc(count);
end;
end;
if count<>0 then
begin
randomize;
result:=true;
GeneratedFraza:='Кибер разум: '+Answers[ans[random(count)]].answer;
end else result:=false;
end;
procedure LetAnswer(text : string);
var
i,found : integer;
slovo : string;
probel : boolean;
begin
slovo :='';
probel:=false;
found:=0;
for i:=1 to length(text) do
begin
if text[i]=' ' then probel:=true;
if not probel then begin
slovo:=slovo+text[i];
if findanswer(lowercase(slovo)) then inc(found);
end else begin slovo:=''; probel:=false; end;
end;
if found=0 then
form1.Memo1.Lines.Add('Кибер разум: '+dialog[random(20)+1]) else
form1.Memo1.Lines.Add(GeneratedFraza);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
s : Tstringlist;
i,a : integer;
f : string;
done : boolean;
begin
if not fileexists(ExtractFilepath(Application.ExeName)+'Mozgi.brain') then
begin
Showmessage('Ôàéë ñ ìîçãàìè "Mozgi.brain" íå áûë íàéäåí, áåç íåãî ïðîãà ðàáîòàòü íå áóäåò.');
Close;
end;
s:=Tstringlist.Create;
s.LoadFromFile(ExtractFilepath(Application.ExeName)+'Mozgi.brain');
for i:=1 to AnswersCount do
begin
f:=lowercase(s.Strings[i-1]);
answers[i].key:='';
answers[i].answer:=s.ValueFromIndex[i-1];
done:=false;
for a:=1 to length(f) do
begin
if f[a]='=' then done:=true;
if not done then Answers[i].key:=Answers[i].key+f[a];
end;
end;
for i:=1 to 20 do dialog[i]:=s.ValueFromIndex[i+AnswersCount];
for i:=1 to 7 do hi[i]:=s.ValueFromIndex[i+AnswersCount+21];
randomize;
memo1.Lines.Add('Êèáåð ðàçóì: '+hi[1+random(7)]);
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=vk_return) and (Edit1.Text<>'') then
begin
Memo1.Lines.Add('Þçåð: '+Edit1.Text);
LetAnswer(lowercase(Edit1.Text));
Edit1.Text:='';
end;
end;
end.
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0