Oppure

Loading
30/04/11 12:15
formyvale
Come si lavora in delphi con le resources? x esempio modificare stringhe di un'altro exe fatto in delphi..oppure l'icona?

grazie!
aaa
30/04/11 13:37
Goblin
per il cambio dell'icona ti rimando a pierotofy.it/pages/extras/forum/171/1024190-%5Bdelphi_cambiare_icona_di_un_file_exe/ dove ho già risposto, per le stringhe se prendi spunto dal cambio dell'icona credo che dovresti riuscirci, avevo fatto qualcosa un po' di tempo fa .. se trovo qualcosa lo posto
Ibis redibis non morieris in bello
30/04/11 15:00
formyvale
Non sono riuscito a capire. Il programma non cambia icona ad un'altro exe sempre fatto in delphi.
aaa
30/04/11 17:49
Goblin
il programmino è solo un esempio, cambia l'icona di qualsiasi file exe sia che sia fatto in delphi che in qualsiasi altro linguaggio
Ibis redibis non morieris in bello
30/04/11 23:38
formyvale
Allora sono riuscito a trovare un esempio googlando ancora...
X ki farà una ricerca su google e troverà questo topic ecco la soluzione..

Fate un programma e chiamatelo Server(ma nn è un server) e mettete questo code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  Type TServerSettings = Record
	szIpAddress		:String[255];
 end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Function ReadResourceFile(var ServerSettings:TServerSettings):Boolean;
Var
 hResInfoBlock	:Longword;
 hResource		  :Longword;
begin
 hResInfoBlock := FindResource(hInstance, 'MYSETTINGS', RT_RCDATA);
 if hResInfoBlock <> 0 then
  begin
   hResource := LoadResource(hInstance, hResInfoBlock);
   if hResource <> 0 then
    begin
      CopyMemory(@ServerSettings,LockResource(hResource),SizeOf(TServerSettings));
    end;
  end;
end;
var
 ServerSettings :TServerSettings;
begin
ReadResourceFile(ServerSettings);
Memo1.Text:='IP:'+ServerSettings.szIpAddress;
end;

end.


invece x l'edit questo:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
Type TServerSettings = Record
	szIpAddress		:String[255];
end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

Function MakeLangID(P, S: Word): Integer;
 Begin
  Result := (S shl 10) or P;
 End;

function WriteToResourceFile(ServerSettings:TServerSettings):Boolean;
Var
	hResource :Longword;
Begin
  Result := False;

  hResource := BeginUpdateResource('Server.exe',False);
 if hResource <> INVALID_HANDLE_VALUE then
  begin
  if  UpdateResource(hResource, RT_RCDATA, 'MYSETTINGS', MakeLangID(LANG_NEUTRAL, SUBLANG_DEFAULT), @ServerSettings, SizeOf(TServerSettings)) then
  Result := True;
		EndUpdateResource(hResource, False);
  end;
end;
Var
 ServerSettings :TServerSettings;
begin
FillChar(ServerSettings,SizeOf(TServerSettings),#0);
  ServerSettings.szIpAddress  := Edit1.text;
  if WriteToResourceFile(ServerSettings) = True then ShowMessage('Ip modificato con successo.')
  else ShowMessage('Impossibile modificare l''ip.');
  Halt(0);
end;

end.
aaa