КАРТА САЙТА
Sibnet.ru
Sibnet.ru

Sibnet.ru — это информационно-развлекательный интернет-проект, ориентированный на широкий круг Сибирского региона.
По данным Rambler Top100, Sibnet.ru является самым популярным порталом в Сибири.

Контакты:
АО "Ринет"
ОГРН 1025402475856
г. Новосибирск, ул. Якушева, д. 37, 3 этаж
отдел рекламы:
(383) 347-10-50, 347-06-78, 347-22-11, 347-03-97

Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль

Внимание! Теперь для входа на форум необходимо вводить единый пароль регистрации сервисов sibnet.ru!

Здравствуйте, гость ( Вход | Регистрация )



 
Ответить в эту темуОткрыть новую тему
> Tweaker на Delphi 5
ReSPAWNeD
сообщение 1.9.2007, 21:23
Сообщение #1


2 Beer or not 2 Beer? :)
Group Icon


Группа: Sibnet-club
Сообщений: 188
Регистрация: 1.9.2007
Из: Анжеро-Судженск
Пользователь №: 5 199



Репутация:   24  


Вопрос такой: пишу на Дельфях 5 Твикер для WinXP Prof SP2. Нужно чтобы параметры каждой опции (допустим используются компоненты TCheckBox и несколько TLabel) считывались из своего .ini файла следующего вида (пример):

Код

[main]
name=Запрет запуска командной строки и *.bat файлов
info=Этот параметр позволяет Вам запретить использование командной строки (т.е. запуск утилиты cmd.exe), а также запуск командных файлов DOS *.bat.
Restrictions=Изменения вступают в силу немедленно!
rootkey=HKEY_CURRENT_USER
keypath=\Software\Policies\Microsoft\Windows\System
ValName=DisableCMD
valtype=REG_DWORD
default=0


Вопрос: Как организовать обход большого количества .ini-файлов, если это количество переменное и чекбоксы с надписями создаются на форме динамически?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Executor
сообщение 2.9.2007, 12:47
Сообщение #2


Молчун
Group Icon


Группа: Пользователи
Сообщений: 70
Регистрация: 22.6.2007
Пользователь №: 463



Репутация:   5  


Ну сделай один ini файл...

Код

[main]
checkboxcount = 5

[checkbox1]
...

[checkbox2]
...

[checkbox3]
...

[checkbox4]
...

[checkbox5]
...
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Pilots
сообщение 3.9.2007, 9:00
Сообщение #3


Любит поговорить
Group Icon


Группа: Sibnet-club
Сообщений: 372
Регистрация: 5.7.2007
Из: Барнаул
Пользователь №: 1 615



Репутация:   6  


Или можешь зделать много ini файлов, и в одном потоке поднимать их считывать по кругу.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BATMEN
сообщение 6.9.2007, 13:05
Сообщение #4


Поддерживает разговор
Group Icon


Группа: Пользователи
Сообщений: 199
Регистрация: 22.6.2007
Пользователь №: 455



Репутация:   7  


Создание динамических лэйбелов (ну это я так примерчик накидал, а там уже подделаешь как нужно)

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type Tres = object
  Pan  : Tpanel;
  Lab1 : Tlabel;
  Lab2 : Tlabel;

  Constructor Create(owner : TComponent);
  Destructor  Destroy;
end;

var
  Form1: TForm1;
  M : array of TRes;

implementation

{$R *.dfm}

Constructor Tres.Create(owner : TComponent);
begin
Pan := TPanel.Create(owner);
Lab1 := TLabel.Create(Pan);
Lab2 := TLabel.Create(Pan);
Pan.Parent := Form1;
Lab1.Parent := Pan;
Lab2.Parent := Pan;

Lab1.TOP := 3;
Lab2.Top := 20;
{
.......
.......
}
end;


Destructor Tres.Destroy;
begin

end;

procedure TForm1.FormCreate(Sender: TObject);
var I : Integer;
begin
for I := 0 to 10 do
  begin
   SetLength(M, Length(M) + 1);
   M[High(m)].Create(Self);
   M[High(m)].Pan.Top := I * 50;
   M[High(m)].Lab1.Caption := IntToStr(I);
  end;
end;

end.


Вот процедура поиска файлов в каталоге

Код

function FindFiles(AdrDir : String; DiskName : integer) : boolean;
var Find : TSearchRec;
    RFind : Integer;
    I : integer;
begin
RFind := FindFirst(AdrDir, faAnyFile, Find);

while RFind = 0 do
  begin
   Application.ProcessMessages;

   if (Find.Name <> '.') and (Find.Name <> '..') then
    if  ((Find.Attr = faDirectory {FAT16/32})  or (Find.Attr = 17{CDFS})
         or (Find.Attr = 8208 {NTFS} ) or (Find.Attr = 8209)
         or (Find.Attr = 10256 {NTFS Compress} ) or (Find.Attr = 10257) )  then
      begin
        FindFiles(COPY(AdrDir, 1, Length(AdrDir) - 3)  + Find.Name + '\*.*', DiskNAme);
      end
    else
      begin
        // Операции над найденным файлом\каталогом
        //....
        //....
      end;

     RFind := FindNext(Find);
  end;

FindClose(Find);

end;
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ReSPAWNeD
сообщение 21.9.2007, 12:04
Сообщение #5


2 Beer or not 2 Beer? :)
Group Icon


Группа: Sibnet-club
Сообщений: 188
Регистрация: 1.9.2007
Из: Анжеро-Судженск
Пользователь №: 5 199



Репутация:   24  


Спасибо Executor, Pilots и BATMEN! Но теперь появился такой вопрос:
Есть функция

Код
procedure TController.WriteRegistryInteger(RK: HKEY; OK:String; WN:String; WV:Integer);
var Rcd:Tregistry;
begin
     Rcd:=TRegistry.Create;
     Rcd.RootKey:=RK;
     Rcd.OpenKey(OK, False);
     Rcd.WriteInteger(WN,WV);
     Rcd.CloseKey;
     Rcd.Free;
end;


как сделать так, чтобы она работала у динамически созданных TCheckBox на событие OnClick?
Т.е. алгоритм работы:
1. Запуск программы;
2. Считывание всех параметров каждого динамически создаваемого TCheckBox;
3. Запоминание программой свойств и процедуры каждого TCheckBox;
4. Отрисовка формы.

Как создать такой Loader в виде процедуры или функции? huh.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. просматривают этот форум (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 8.5.2024, 14:06
Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Размещение рекламы:
тел: (383) 347-06-78, 347-10-50

Правила использования материалов