Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Вниз

ini   Найти похожие ветки 

 
rosl   (2003-12-25 07:28) [0]

Уважаемые МАСТЕРА!!!
Как в файл ini записать, а потом прочитать оттуда настройку font.style


 
Babay   (2003-12-25 07:52) [1]

Uses typInfo,inifiles;

Пишем:
Var ini:TIniFile;
begin
ini:=TIniFile.Create("c:\Config.ini");
ini.WriteString("Font","FontStyle",GetSetProp(Font,"Style"));
ini.Free;
end;

Читаем:
Var ini:TIniFile;
s:String;
begin
ini:=TIniFile.Create("c:\Config.ini");
s:=ini.ReadString("Font","FontStyle","");
ini.Free;
SetSetProp(Font, "Style",s);
end;

Открываем хелп или книжку читаем про RTTI


 
del   (2003-12-25 08:05) [2]

Вот ini - файл
[Global]
ServerName=Main
dataBaseName=transport
userName=masterRoute

[Font]
name=Arial
Height=-12

[Visual]
SheetActive=1
aviFileName=e:\DevDelphi\resource\common.avi

[Environ]
idRouteType=3

а вот работающий код:
чтение:
fontName := inifile.ReadString("Font", "name", "Arial");
if Length(fontName) > 0 then
fontHeight :=
StrToInt(inifile.ReadString("Font", "Height", "10"))
else
fontHeight := Self.Font.Height;
inifile.Free;

Self.Font.Name := fontName;
Self.Font.Height := fontHeight;

/////////////
запись:
inifile := TIniFile.Create(inifileName);
inifile.WriteString("Visual", "SheetActive",
IntToStr(PageControl.ActivePageIndex));
inifile.WriteString("Font", "name", fontName);
inifile.WriteString("Font", "Height", IntToStr(fontHeight));


 
Babay   (2003-12-25 08:28) [3]

То del
А где запись свойства Style ? ты вопрос внимательно читал ?


 
del   (2003-12-25 08:44) [4]

Babay, прости, погорячился.


 
Sandman25   (2003-12-25 11:06) [5]

Babay

Не подскажете, где можно найти хороший справочник по Rtti?

В Delphi help GetSetProp не описан, Yandex ничего не нашел по запросу GetSetProp, а по запросу RTTI выдает только ссылки на книги либо на форумы. Я покопался в TypInfo.pas, но это не самый удобный способ изучения, особенно учитывая отсутствие комментариев...


 
PVOzerski   (2003-12-25 11:19) [6]

tFontStyle - это обычный enum, приводимый к типу integer и обратно. Так что ReadInteger и WriteInteger вполне подойдут.


 
Babay   (2003-12-25 12:48) [7]

To Sandman25
-> "Я покопался в TypInfo.pas" и я тоже. Правда есть еще бумажная книжка по Д там неплохо основы этого дела прописаны. + еще исходники компонетов которые его используют в RXLibrary был кажется формплацемент.
А насчет электронки незнаю уменя нету буду то же рад узнать ссылочку.


 
Sandman25   (2003-12-25 12:55) [8]

[7] Babay © (25.12.03 12:48)

Понятно. Спасибо. Значит я на правильном пути :) Сижу в typinfo.pas, читаю.
Ссылочек не нашел.


 
Ega23   (2003-12-25 12:56) [9]

function GetFontStyle(const Value: TFontStyles): Integer;
begin
Result:=0;
if (fsBold in Value) then Result:=Result or 1;
if (fsItalic in Value) then Result:=Result or 2;
if (fsUnderline in Value) then Result:=Result or 4;
if (fsStrikeout in Value) then Result:=Result or 8;
end;

//***************************************************************

function SetFontStyle(const Value: integer): TFontStyles;
begin
Result:=[];
if ((Value shr 0) and 1)=1 then Result:=Result+[fsBold];
if ((Value shr 1) and 1)=1 then Result:=Result+[fsItalic];
if ((Value shr 2) and 1)=1 then Result:=Result+[fsUnderline];
if ((Value shr 3) and 1)=1 then Result:=Result+[fsStrikeout];
end;


Ну а запись в ini - ReadInteger, WriteInteger


 
Babay   (2003-12-25 12:56) [10]

To PVOzerski неа не enum a set

попробуйте сделать так

edit1.Text:=Inttostr(Integer(Font.Style));

Ну как увидели номер?
или я чегото не понимаю?


 
PVOzerski   (2003-12-25 13:05) [11]

Да, здесь, конечно, речь о set of tFontStyle - я поспешил... Но и на этот случай есть решение - может быть, не самое изящное, но опробованное.
var
x:tFontStyles;
y:array[1..sizeof(tFontStyles)]of byte absolute x;
i:integer;
begin
x:=Font.Style;
for i:=1 to sizeof(tFontStyles) do
IniFile.WriteInteger("Properties","FontStyleByte"+inttostr(i),y[i]);

Чтение - аналогично.


 
Тимохов   (2003-12-25 13:12) [12]

Что-то я не понял вот этой конструкции

x:tFontStyles;
y:array[1..sizeof(tFontStyles)]of byte absolute x;

Это ты как из головы придумал или это у тебя работает?

Вообще говоря это работать не будет, т.к. множества представляются не побайтно (как было в паскале) и побитно...


 
Sandman25   (2003-12-25 13:16) [13]

[12] Тимохов © (25.12.03 13:12)

Ничего страшного. Значит, запишется/считается не 8 байт, а 1.


 
PVOzerski   (2003-12-25 13:18) [14]

Это у меня испытано и на других сложных структурах (не на множествах), с внутренней организацией типа Set я тоже разбирался. Хотелось бы знать, а как же тогда должны представляться множества "внутри". Да, побитно, но биты-то живут в байтах, и ничего, кроме битовой арифметики, процессор с битами как таковыми делать не умеет. В том числе и присваивание тоже. А упихивать множества set of 0..63 я ухитрялся аж в double (и загонять в соответствующие поля в MySQL + операции над множествами через самодельные UDFы на FreePascal).


 
Тимохов   (2003-12-25 13:19) [15]

Что ничего страшного - [11] неверный код. Он просто в дельфи не будет рабоать. Я постмотрел анкету автора - любит паскаль - с паскале это работать будет, а в дельфи нет.


 
Sandman25   (2003-12-25 13:24) [16]

[15] Тимохов © (25.12.03 13:19)

Я запустил. Оно сработало, записало вроде правильно. 15 для всех выбранных.


 
Тимохов   (2003-12-25 13:30) [17]

На самом деле, я виноват - не узрел, что array[1..sizeof(tFontStyles)]of byte, т.е. фактически array[1..1]of byte.

Я просто раньше пользовался методом побайтной записи множеств в паскале - когда перешел на дельфи столкнулся в проблемами.

Виноват - невинмательно прочел.


 
PVOzerski   (2003-12-25 13:31) [18]

Для сомневающихся (Delphi 3 - не какой-то там FPC :^) ):
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
IniFile:tIniFile;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
type
tBset=set of byte;
var
x,y:tBset;
s1:array[1..sizeof(tBset)]of byte absolute x;
s2:array[1..sizeof(tBset)]of byte absolute y;
i,code:integer;
b:byte;
begin
x:=[];
for i:=0 to pred(Memo1.lines.count)do
begin
val(Memo1.lines[i],b,code);
if code=0 then
include(x,b);
end;
for i:=1 to sizeof(tBset)do
IniFile.WriteInteger("S1","I"+inttostr(i),s1[i]);
for i:=1 to sizeof(tBset)do
S2[i]:=IniFile.ReadInteger("S1","I"+inttostr(i),0);
Label1.Caption:="";
for i:=0 to 255 do
if i in y then
Label1.Caption:=Label1.Caption+" "+inttostr(i);
end;
initialization
IniFile:=tIniFile.Create(ExtractFilePath(Paramstr(0))+"test.ini");
end.


 
Тимохов   (2003-12-25 13:35) [19]

PVOzerski © (25.12.03 13:31) [18]
Сумлевающихся нет. Я уже сказал, чем было вызвано мое заблуждение: отрицательным опытом прошлого и невниманием настоящего.


 
Тимохов   (2003-12-25 13:37) [20]

Во!
Я бы для пущей надежности данного механизма написал бы packed record! Хотя работать и так будет.


 
Sandman25   (2003-12-25 16:12) [21]

Зря я боялся лезть в typinfo.pas. Там до implementation всего 340 строчек. Действительно, можно без документации разобраться.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.013 c
1-25300
Xtz
2003-12-22 22:22
2004.01.09
И Снова TreeView ,помогите разобратся млин уж неделю парюсь


1-25417
MadAngel
2003-12-23 20:45
2004.01.09
Несколько вопросов по RichEdit


1-25339
Mip
2003-12-22 10:02
2004.01.09
Помогите плз. разобраться с Word


3-25236
Jenya
2003-12-12 22:16
2004.01.09
Как добавить запись в БД Access


14-25595
Ega23
2003-12-17 13:17
2004.01.09
А пользуется ли кто-нибудь Add-To-Do?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский