Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
1

Окрашивание с ini файла

04.12.2012, 19:48. Показов 991. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, IniFiles, Menus;
 
type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Button1: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    FontDialog1: TFontDialog;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Ini:TIniFile;
  sFile:string;
  s:string;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
const
  Size = 100; //Наибольшее возможное количество групп.
  D = ['0', '1'];
var
  S : String;
  ArrPos : array[1..Size] of Integer;
  ArrStr : array[1..Size] of String;
  i, Len, Cnt, CntMin, Ind : Integer;
begin
Memo1.Clear;
 S := ComboBox1.Text;
  Len := Length(S);
  CntMin := Len;
  Cnt := 0;
  Ind := 0;
  for i := 1 to Len do begin
    //Пропускаем символы, не принадлежащие множеству D.
    if not (S[i] in D) then Continue;
    //Подсчёт элементов в группе.
    Inc(Cnt);
    //Отслеживаем конец очередной группы.
    if (i = Len) or (S[i] <> S[i + 1]) then begin
      //Если найдена более короткая группа.
      if Cnt < CntMin then begin
        CntMin := Cnt;
        Ind := 1; //Начинаем записывать сначала.
        ArrPos[Ind] := i - Cnt + 1; //Позиция самой короткой группы.
        ArrStr[Ind] := Copy(S, i - Cnt + 1, Cnt); //Группа.
      //Если найдена группа, равная по размеру текущей самой короткой группы.
      end else if Cnt = CntMin then begin
        Inc(Ind); //Добавляем группу.
        ArrPos[Ind] := i - Cnt + 1; //Позиция очередной самой короткой группы.
        ArrStr[Ind] := Copy(S, i - Cnt + 1, Cnt); //Группа.
      end;
      Cnt := 0; //Сброс счётчика.
    end;
  end;
 
  //Ответ.
  if Ind > 0 then begin
    Memo1.Lines.Add('Наименьшая длина группы = ' + IntToStr(CntMin)
      + #13#10'Всего групп: ' + IntToStr(Ind));
    Memo1.Lines.Add('Список самых коротких групп:');
    for i := 1 to Ind do
      Memo1.Lines.Add('Позиция: ' + IntToStr(ArrPos[i])
        + ', группа: "' + ArrStr[i] + '".');
  end else
    Memo1.Lines.Add('В строке нет групп.');
end;
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
var
  APchar: array[0..254] of Char;
begin
//Формирование имени каталога Windows
  GetWindowsDirectory(APchar, 255);
//Формирование имени ini-файла в каталоге Windows
  sFile := string(APchar) + '\My.ini';
  if FileExists(sFile) then
 
   begin
    Ini := TIniFile.Create(sFile);
    Font.Name := Ini.ReadString('Параметры','Шрифт', 'MS Sans Serif');
    Font.color := stringtocolor( Ini.ReadString('Параметры' , 'Цвет шрифта', colortostring( Font.color )));
    Font.Size := ini.ReadInteger('Параметры' , 'Размер шрифта' , font.Size);
   end;
label1.Caption :='Выберите строку:';
Memo1.Clear;
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
var f : File;
begin
  if (not FileExists(sFile)) then
  begin
    AssignFile (f, sFile);
    Rewrite(f);
    CloseFile(f);
    Ini := TIniFile.Create(sFile);
  end;
 
  Ini.WriteString('File','main', ParamStr(0));
  Ini.WriteString('Параметры', 'Шрифт', Font.Name);
  Ini.WriteString('Параметры' , 'Цвет шрифта' , colortostring(Font.color));
  Ini.Writeinteger('Параметры' , 'Размер шрифта' , font.Size);
end;
 
 
 
 
procedure TForm1.Button3Click(Sender: TObject);
var F : File;
begin
 
  if FileExists(sFile) then
  begin
    AssignFile(F, sFile);
    Erase(F);
  end
end;
 
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  if (FontDialog1.Execute) then
  begin
    Font.Assign(FontDialog1.Font);
    if (Ini<>nil) and Ini.ValueExists('Параметры','Шрифт')
    then
    Ini.WriteString('Парметры','Шрифт', Font.Name);
  end;
    begin
    Font.Assign(FontDialog1.Font);
    if (Ini<>nil) and Ini.ValueExists('Параметры','Размер шрифта')
    then
    Ini.WriteInteger('Парметры','Размер шрифта', font.Size);
  end;
end;
 
 
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
   if (Ini = nil) then Exit;
   Ini.UpdateFile;
   Ini.Free;
end;
 
 
end.
Прога считывает настройки с ini файла, к примеру там записано
[File]
main=H:\Универ\Семестр 3\Delphi\Задания\Лаба 10\Project1.exe
[Параметры]
Шрифт=Courier
Цвет шрифта=clRed
Размер шрифта=12

Прогу запускаю, но окрашиваются не все кнопки, как сделать что бы и кнопки окрашивались?
И еще, как сделать что бы файл записывался в текущий коталог где прога запустилась?
GetWindowsDirectory(APchar, 255); Убирал данную строку не помогает всеравно в виндовс создает

Добавлено через 6 минут
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2012, 19:48
Ответы с готовыми решениями:

Поиск на компьютере INI-файла и копирование найденного файла в папку определенного пользователя
Нужна ваша помощь! Нужно найти файл с расширением .ini и скопировать его в папку Пользователи\(имя...

Создание файла INI из файла cmd/bat итд
Доброго времени суток. Есть задача - Создать файл с указанием параметра Х Есть пусть к файлу...

Как вытащить из ini-файла имя файла?
Кто знает, помогите плз. В макросе под Excel надо вытащить из ini-файла имя файла, чтобы потом его...

Чтение .ini файла
Здравствуйте. Подскажите новичку пожалуйста такую &quot;весч&quot;: procedure TForm1.Button3Click(Sender:...

16
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
04.12.2012, 19:53 2
Цитата Сообщение от mr_aleks Посмотреть сообщение
окрашиваются не все кнопки
Кури ParentFont
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
04.12.2012, 19:53 3
а что кнопки можно окрасить? оО
и цвета я бы сохранял как Integer, а не как String, так как цвет имеет тип целого числа
на счет чтобы файл в текущей директории был
Delphi
1
ExtractFilePath(ParamStr(0))+'inifile.ini'
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
04.12.2012, 20:59  [ТС] 4
mss, Уже везде их выкурил, но про цвет там ничего не нашел , работающего)
Arcor, Ругается, [Error] Unit1.pas(103): Statement expected, but expression of type 'String' found
Ну я имел в виду, окрасить текст на кнопках, мб вы что то другое подумали или так тоже нельзя с ини файла?
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
04.12.2012, 21:06 5
ну у меня ни разу не получилось поменять цвет.. все остальное пожалуйста..
и в чем именно у тебя такую ошибку выдает?
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
04.12.2012, 21:06 6
ппц.

в этой строке

Цитата Сообщение от mr_aleks Посмотреть сообщение
Font.color := stringtocolor( Ini.ReadString('Параметры' , 'Цвет шрифта', colortostring( Font.color )));
цвет фонта какого контрола ты устанавливаешь, спрашивается ?
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
04.12.2012, 21:10  [ТС] 7
Arcor, когда поменял строку записи файла на вашу)

mss, цвет текста из ини файла, Ini.WriteString('Параметры' , 'Цвет шрифта' , colortostring(Font.color));
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
04.12.2012, 21:14 8
Delphi
1
Font.color := stringtocolor( Ini.ReadString('Параметры' , 'Цвет шрифта', colortostring( Font.color )));
ничего не произойдет
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
04.12.2012, 21:21 9
Цитата Сообщение от mr_aleks Посмотреть сообщение
цвет текста из ини файла
ппц.

какие же тогда у тебя "кнопки окрашиваются", если не все ?
где у тебя строка кода, которая якобы "окрашивает" какие-то там "не все кнопки" ?)
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
04.12.2012, 21:28  [ТС] 10
Font.color := stringtocolor( Ini.ReadString('Параметры' , 'Цвет шрифта', colortostring( Font.color )));
Данная строка, как я понимаю и окрашивает текст в программе!
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
04.12.2012, 21:35 11
Цитата Сообщение от mr_aleks Посмотреть сообщение
Данная строка, как я понимаю и окрашивает текст
Так ведь текст !! А не кнопку)..


Цитата Сообщение от mr_aleks Посмотреть сообщение
в программе
Не в "программе", а выводимый на форму и, в том числе, во все контролы, лежащие непосредственно на этой форме, у которых ParentFont = True.

Я про ParentFont стенке тут говорил, да ?
0
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
04.12.2012, 21:42  [ТС] 12
Цитата Сообщение от mr_aleks Посмотреть сообщение
mss, Уже везде их выкурил, но про цвет там ничего не нашел , работающего)
Везде ParentFont стоит в тру.
Цитата Сообщение от mr_aleks Посмотреть сообщение
Ну я имел в виду, окрасить текст на кнопках, мб вы что то другое подумали или так тоже нельзя с ини файла?
0
249 / 154 / 31
Регистрация: 07.10.2012
Сообщений: 401
04.12.2012, 22:53 13
Чужая цитата:
Цитата Сообщение от Ev[G}eN Посмотреть сообщение
у Button цвет текста не меняется, для этого используйте BitBtn
1
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
05.12.2012, 00:03  [ТС] 14
DaMortum, спасибо, не знал.

Так что по поводу директории?? не удобно как то в виндовс всегда лазить
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
05.12.2012, 00:20 15
я же написал как, вот тут Окрашивание с ini файла

покажи как ты используешь эту строку что оно не работает

вот у меня почему-то работает
Delphi
1
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'inifile.ini');
0
249 / 154 / 31
Регистрация: 07.10.2012
Сообщений: 401
05.12.2012, 00:22 16
Цитата Сообщение от mr_aleks Посмотреть сообщение
Так что по поводу директории?? не удобно как то в виндовс всегда лазить
Delphi
1
sFile := ExtractFilePath(Application.ExeName) + 'My.ini';
1
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
05.12.2012, 12:22  [ТС] 17
DaMortum, спасибо работает.
И всем кто помог
0
05.12.2012, 12:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2012, 12:22
Помогаю со студенческими работами здесь

чтение из ini файла
здравствуйте товарищи программисты.делаю тест и надо чтобы вопросы выборочно подгружались из ini...

Надежность ini-файла
Добрый день. Хотел бы узнать, надежно ли использовать ini файл для хранения очень большого кол-во...

Чтение из ini файла
Значит записал я в ini файл название вопроса который ввёл в Edit1 , ка мне его вывести в Edit4 ?...

Загрузка ini файла
if (FileExists(&quot;etc.ini&quot;)) { ini = new TIniFile(&quot;etc.ini&quot;);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru