Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание файла единократно при первом запуске 
:(
    Опции темы
PIF
Дата 29.4.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 27.1.2005

Репутация: нет
Всего: нет



Здравствуйте! Скажите, как при первом запуске моей программы на данной машине, она(программа) создавала текстовый файл, и записывала в него имя компьютера. При последующих запусках, это файл не затрагивался.
Заранее спасибо!!!
PM MAIL   Вверх
_hunter
Дата 29.4.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



дык в чем проблема? смотри есть файл или нет. если нету -- создавай. если есть -- не трогай его...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Poseidon
Дата 29.4.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Подтверждаю слова _hunter кодом:
Код
if not FileExists('C:\temp.txt') then //создаем файл


Это сообщение отредактировал(а) Poseidon - 29.4.2005, 17:19


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Poseidon
Дата 29.4.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Вот примерный код
Код
Function ReadComputerName:string;
var
i:DWORD;
p:PChar;
begin
i:=255;
GetMem(p, i);
GetComputerName(p, i);
Result:=String(p);
FreeMem(p);
end;

procedure TForm1.FormCreate(Sender: TObject);
var f: TextFile;
begin
if not FileExists('C:\temp.txt')
then
  begin
  AssignFile(f,'C:\temp.txt');
  ReWrite(f);
  Write(f,ReadComputerName);
  CloseFile(f);
  end;
end;

Хотя зачем это нужно? Ну пусть программа переписывает каждый раз имя. Или оно что, часто меняется?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
PIF
Дата 29.4.2005, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 27.1.2005

Репутация: нет
Всего: нет



тогда такой вопрос немогли-бы вы объяснить поподробней следующий код
Код

procedure TForm1.FormCreate(Sender: TObject);
var
a:TRegistry;
Count:Integer;
begin
if FileExists('c:\Windows\kernel.fhd')=false then begin
a:=TRegistry.Create;
a.RootKey:=HKEY_LOCAL_MACHINE;
a.OpenKey('\Software\Microsoft\oor',true);
a.WriteInteger('RunCount',1);
a.CloseKey;
a.Free;
FileCreate('c:\Windows\kernel.fhd');
end
else begin
a:=TRegistry.Create;
a.RootKey:=HKEY_LOCAL_MACHINE;
a.OpenKey('\Software\Microsoft\oor',true);
Count:=a.ReadInteger('RunCount');
a.CloseKey;
a.Free;
if Count=3 then begin
halt;
end
else begin
Inc(Count);
a:=TRegistry.Create;
a.RootKey:=HKEY_LOCAL_MACHINE;
a.OpenKey('\Software\Microsoft\oor',true);
a.WriteInteger('RunCount',Count);
a.CloseKey;
a.Free;
FileCreate('c:\Windows\kernel.fhd');
end;
end;
end;


Это сообщение отредактировал(а) Girder - 29.4.2005, 19:10
PM MAIL   Вверх
Ch0bits
Дата 29.4.2005, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: нет
Всего: 62



Если не находит файл c:\Windows\kernel.fhd, то создаёт ключ в реестре HKEY_LOCAL_MACHINE\Software\Microsoft\oor пишет в него значение RunCount=1

Если файл найден и RunCount<3, то прибавляет его значение.
Если RunCount=3, то завершает программу.

Похоже на очень примитивную защиту по количеству запусков.
Добавлено @ 19:11
Ошибки: Windows не всегда может находиться на C: и называться Windows.
PM WWW   Вверх
Poseidon
Дата 29.4.2005, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Обьясняю:
Код
procedure TForm1.FormCreate(Sender: TObject);
var // обьявляем преременные
a:TRegistry;
Count:Integer;
begin
if FileExists('c:\Windows\kernel.fhd')=false then begin // если нет файла c:\Windows\kernel.fhd, то
a:=TRegistry.Create; // инициализируем переменную рееестра
a.RootKey:=HKEY_LOCAL_MACHINE; // открываем ветвь реестра HKEY_LOCAL_MACHINE
a.OpenKey('\Software\Microsoft\oor',true); // открываем в реестре ключь \Software\Microsoft\oor, если ключа нет, создаем
a.WriteInteger('RunCount',1); // записываем в этот ключь параметр DWORD с именем RunCount со значанием 1
a.CloseKey; // закрываем реестр
a.Free; // освобождаем переменную реестра
FileCreate('c:\Windows\kernel.fhd'); // создаем файл c:\Windows\kernel.fhd
end
else begin // если файл c:\Windows\kernel.fhd есть, то
a:=TRegistry.Create; // см. выше
a.RootKey:=HKEY_LOCAL_MACHINE; // см. выше
a.OpenKey('\Software\Microsoft\oor',true); // см. выше
Count:=a.ReadInteger('RunCount'); // присваиваем переменной Count значение, считанное с параметра RunCount
a.CloseKey; // см. выше
a.Free; // см. выше
if Count=3 then begin // если Count равно 3 то
halt; // Инициируеv аварийное завершение программы
end
else begin // если Count не равно 3 то
Inc(Count); // увеличиваем значение переменной Count на один, т.е. Что то вроде Count:= Count+1
a:=TRegistry.Create; // см. выше
a.RootKey:=HKEY_LOCAL_MACHINE; // см. выше
a.OpenKey('\Software\Microsoft\oor',true); // см. выше
a.WriteInteger('RunCount',Count); // см. выше
a.CloseKey; // см. выше
a.Free; // см. выше
FileCreate('c:\Windows\kernel.fhd'); // см. выше
end;
end;
end; 

Добавлено @ 19:15
М-да. Пока обьяснял все по строчке, Vadim999 перегнал и обьяснил в кратце smile

Это сообщение отредактировал(а) Poseidon - 29.4.2005, 19:17


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
PIF
Дата 29.4.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 27.1.2005

Репутация: нет
Всего: нет



Большое вам спасибо, разъяснили!!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.