Você está na página 1de 3

[Tutorial]Build Server com Resources Vamos logo ao que interessa. Primeiramente vamos comear com o Editor.

Adicione 2 Labeled Edit(fica na aba additional) 1 CheckBox e 1 Button


Na propriedade Editlabel.Caption do LabeledEdit1 deixe :
Postado originalmente por LabeledEdit1.EditLabel.Caption

Mensagem Na propriedade Editlabel.Caption do LabeledEdit2 deixe:


Postado originalmente por LabeledEdit1.EditLabel.Caption

Porta Na propriedade Caption do CheckBox1 deixe:


Postado originalmente por CheckBox1.Caption

Exibir Mensagem Agora insira o cdigo abaixo na Unit1.pas


type TConfig = record //cria uma estrutura para os dados Mensagem: string[255]; //Define uma string de no mximo 255 caracteres ExibirMensagem: boolean; //Define uma vriavel boolean Porta: Integer; //Define uma variavel Inteira. end; PConfig = ^TConfig; //Define que o tipo PConfig um Pointer do TConfig

Abaixo de
private { Private declarations } public { Public declarations } end;

Agora de um duplo clique no Button1 ,apague o begin e insira


var ResHandle:THandle; CFG:PConfig; szFile:String; begin szFile:='server.exe';//Nome do arquivo a ser editado New(CFG);//Aloca na memria a estrutura TConfig e faz o pointer apontar para ela ResHandle:=BeginUpdateResourceW(PWideChar(wideString(szFile)), False); //Define um handle para edio dos resources if ResHandle<>0 then //Se o handle for diferete de 0 begin CFG.Mensagem := LabeledEdit1.Text;//Define as configuraes CFG.ExibirMensagem := CheckBox1.Checked;//Define as configuraes CFG.Porta := StrToInt(LabeledEdit2.Text);//Define as configuraes UpdateResource(ResHandle, RT_RCDATA, 'RCFG', 0, Pointer(CFG), SizeOf(CFG^));//Grava a TConfig nos resources do server. Dispose(CFG);//Libera a memria usada pelo TConfig EndUpdateResource(ResHandle,false);//salva as modificaes no arquivo ShowMessage('Configuraes salvas'); end;

end;

O que fizemos acima foi Adicionar as configuraes nos resources,comentei linha por linha para que se possa entender. Agora vamos fazer o server. No server voc vai adicionar 2 labels e um checkbox. Agora no mesmo lugar do editor adicione no server Cdigo:
Type TConfig = record //cria uma estrutura para os dados Mensagem: string[255]; //Define uma string de no mximo 255 caracteres ExibirMensagem: boolean; //Define uma vriavel boolean Porta: Integer; //Define uma variavel Inteira. end; PConfig = ^TConfig; //Define que o tipo PConfig um Pointer do TConfig

Agora vamos fazer uma funo que carrega as configuraes Cdigo:


Function LerCFG(var CFG:PConfig):Boolean; var hResInfo: HRSRC; hRes: HGLOBAL; begin Result := False; hResInfo := FindResource(hInstance, 'RCFG', RT_RCDATA);//Procura o resource que tenha o nome RCFG e seja do tipo RCDATA if hResInfo <> 0 then //se o handle for diferente de 0 begin hRes := LoadResource(hInstance, hResInfo);//Carrega o resource if hRes <> 0 then begin CFG := LockResource(hRes);//define um pointer para o resource na memria Result := True; end; end; end;

e no OnCreate do form ,apague o Begin e o end e insira o seguinte cdigo: Cdigo:


Var CFG : PConfig; begin New(CFG);//Aloca memria para o pointer if not LerCFG(CFG) then //se ele no conseguir carregar as configuraes begin ShowMessage('Erro ao ler config'); Exit; end; Label1.Caption := 'Mensagem:'+CFG.Mensagem; Label2.Caption := 'Password:'+IntToStr(CFG.Porta); CheckBox1.Checked := CFG.ExibirMensagem; End;

Agora de Build no Editor e no server e deixe ambos na mesma pasta e teste(tenha certeza que o nome do arquivo o mesmo que o nome do arquivo na vriavel szFile do Editor,que no caso server.exe).