Ĺadny brzuch
Witam :)
Wie ktos moze, jak zapisac plik INI do pliku exe tak zeby ten exe odczytywal konfigurację "sam z siebie :D"
Z gory thx
Witam :)
Wie ktos moze, jak zapisac plik INI do pliku exe tak zeby ten exe odczytywal konfigurację "sam z siebie :D"
Z gory thx
no raczej nie :D
i jeszcze dwa bo zapomnialem co zrobic, zeby przy zamykaniu programu program nie zamknal sie do puki nie wykona wszystkiego w onclose ?
I jak zrobic, zeby status zostawal po rozlaczeniu sie z serwerem w THGG ??
http://community.bor...0,27979,00.html ? :>
yyy... postaram sie zrozumiec :D
a zna ktos odpowiedzi na inne pytania, przydalby sie tez odczyt z exe.
Tylko pamiętaj, że bez programu pomocniczego do samego siebie niczego nie zapiszesz ;)
yyy... postaram sie zrozumiec :D
a zna ktos odpowiedzi na inne pytania, przydalby sie tez odczyt z exe.
A ja widze ;) A na inne pytanka (szczegolnie ten opis) ktos zna odpowiedzi :D??
Użytkownik d35tr0y3r edytował ten post 08 styczeń 2006, 18:55
Po co ci zapisywac INI ? :P
Patrz, tutaj masz procedurke zapisu do Exe:
[...]type PTableString = ^TTableString; TTableString = array of string; TForm1 = class(TForm)[...] [...]var // Globalne Form1: TForm1; res : TTableString;[...] [...]procedure SaveToExe(FName, Str: string); var F : file of Byte; i : Integer; begin AssignFile(F, 'Nazwa.exe'); Reset(F); try Seek(F, FileSize(F) - SizeOf(i)); BlockRead(F, i, SizeOf(i)); if (i < SizeOf(i)) or (i > FileSize(f)) then i := 0; Seek(F, FileSize(F) - i); Truncate(F); BlockWrite(F, Str[1], Length(Str)); i := Length(Str) + SizeOf(i); BlockWrite(F, i, SizeOf(i)); finally CloseFile(F); end; end;
Jak bys chcial np. teksty z dwoch editow to zapisujesz tak:
SaveToExe('Nazwa.exe', Edit1.Text + ']' + Edit2.Text);
No, dobra juz zapisano :)
Teraz odczyt, musisz zastosowac taka funkcje (rozdzielacz dwoch editow za posrednictwem tego znaku: "]" :
[...]type PTableString = ^TTableString; TTableString = array of string;[...] [...]function explode(str: string; rozdzielacz: Char): TTableString; var i, j: Integer; begin j:=1; i:=1; while i <= Length(str) do begin if (str[i] = rozdzielacz) or (i = Length(str)) then begin if (i = Length(str)) and (str[i] <> rozdzielacz) then inc(i); SetLength(Result, High(Result)+2); Result[High(Result)] := Trim(Copy(str, j, i-j)); j := i+1; end; inc(i); end; end;
Teraz funkcja czytania:
[...]function LoadFromExe(FName: string): string; var F : file of Byte; i : Integer; begin Result := ''; AssignFile(F, 'Nazwa.exe'); FileMode := fmOpenRead; Reset(F); try Seek(F, FileSize(F) - SizeOf(i)); BlockRead(F, i, SizeOf(i)); if (i < SizeOf(i)) or (i > FileSize(f)) then Exit; Seek(F, FileSize(F) - i); SetLength(Result, i - SizeOf(i)); BlockRead(F, Result[1], Length(Result)); finally CloseFile(F); end; end;[...]
Ok!. Teraz tylko procedurka czytania:
[...]res:=explode(LoadFromExe('Nazwa.exe'),']');[ ...]
A wywolujesz pierwszy edit, tak:
TForm1.Button1Click(Sender: TObject); begin Edit1.Text := res[0]; end;
I, tak wlasnie wczytales, zapisany Edit, do Edita w drugim programie :)
Pozdro.
No teraz już wszystko wiem , dzięki :D
Tylko właśnie mam problem z tym opisem w THGG :)
Nie wiem za bardzo o co ci chodzi...
Ale, tam wspomniales, zeby program nie zamykal sie przed wykonaniem procedury. Musisz poprostu dac procke pod OnCloseQuery. Program wykona procedury przed zamknieciem programu. Dajmy na to:
CanClose:=False;
Wtedy, przed zamknieciem programu, program nie pozwoli na jego zamkniecie :P
Pozdr.
Użytkownik Shooter edytował ten post 08 luty 2006, 20:31
Shooter w twoim przykładzie jest błąd: po pierwsze nie wspomniałeś że do pliku w którym chcemy zapisać do var trzeba dodać:
res : TTableString; (dziwne że znalazło się to w pierwszym pliku)
Poza tym coś żle jest w przykładzie który podałeś bo po naciśnięciu buttona w pliku w którym miało zapisać wyskakuje:
http://img420.images...86/error8kr.jpg
Kurcze fajnie by było żebyś poprawił bo to przejrzyście napisana instrukcja :) (tylko szkoda że ten error wyskakuje :( )
Użytkownik dddman edytował ten post 09 luty 2006, 21:40
Nie mozesz tego uzyc w trakcie dzialania programu :P
Nie mozesz tego uzyc w trakcie dzialania programu, do ktorego zapisujesz :P
nie pisz posta pod postem :]
Pewnie możesz sobie dopisać do dowolnego pliku, tylko nie do aktualnie odpalonego (logiczne)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Wie ktos moze, jak zapisac plik INI do pliku exe tak zeby ten exe odczytywal konfigurację "sam z siebie :D"
Z gory thx
Witam :)
Wie ktos moze, jak zapisac plik INI do pliku exe tak zeby ten exe odczytywal konfigurację "sam z siebie :D"
Z gory thx

no raczej nie :D
i jeszcze dwa bo zapomnialem co zrobic, zeby przy zamykaniu programu program nie zamknal sie do puki nie wykona wszystkiego w onclose ?
I jak zrobic, zeby status zostawal po rozlaczeniu sie z serwerem w THGG ??
http://community.bor...0,27979,00.html ? :>
yyy... postaram sie zrozumiec :D
a zna ktos odpowiedzi na inne pytania, przydalby sie tez odczyt z exe.
Tylko pamiętaj, że bez programu pomocniczego do samego siebie niczego nie zapiszesz ;)
yyy... postaram sie zrozumiec :D
a zna ktos odpowiedzi na inne pytania, przydalby sie tez odczyt z exe.

A ja widze ;) A na inne pytanka (szczegolnie ten opis) ktos zna odpowiedzi :D??
Użytkownik d35tr0y3r edytował ten post 08 styczeń 2006, 18:55
Po co ci zapisywac INI ? :P
Patrz, tutaj masz procedurke zapisu do Exe:
[...]type PTableString = ^TTableString; TTableString = array of string; TForm1 = class(TForm)[...] [...]var // Globalne Form1: TForm1; res : TTableString;[...] [...]procedure SaveToExe(FName, Str: string); var F : file of Byte; i : Integer; begin AssignFile(F, 'Nazwa.exe'); Reset(F); try Seek(F, FileSize(F) - SizeOf(i)); BlockRead(F, i, SizeOf(i)); if (i < SizeOf(i)) or (i > FileSize(f)) then i := 0; Seek(F, FileSize(F) - i); Truncate(F); BlockWrite(F, Str[1], Length(Str)); i := Length(Str) + SizeOf(i); BlockWrite(F, i, SizeOf(i)); finally CloseFile(F); end; end;
Jak bys chcial np. teksty z dwoch editow to zapisujesz tak:
SaveToExe('Nazwa.exe', Edit1.Text + ']' + Edit2.Text);
No, dobra juz zapisano :)
Teraz odczyt, musisz zastosowac taka funkcje (rozdzielacz dwoch editow za posrednictwem tego znaku: "]" :
[...]type PTableString = ^TTableString; TTableString = array of string;[...] [...]function explode(str: string; rozdzielacz: Char): TTableString; var i, j: Integer; begin j:=1; i:=1; while i <= Length(str) do begin if (str[i] = rozdzielacz) or (i = Length(str)) then begin if (i = Length(str)) and (str[i] <> rozdzielacz) then inc(i); SetLength(Result, High(Result)+2); Result[High(Result)] := Trim(Copy(str, j, i-j)); j := i+1; end; inc(i); end; end;
Teraz funkcja czytania:
[...]function LoadFromExe(FName: string): string; var F : file of Byte; i : Integer; begin Result := ''; AssignFile(F, 'Nazwa.exe'); FileMode := fmOpenRead; Reset(F); try Seek(F, FileSize(F) - SizeOf(i)); BlockRead(F, i, SizeOf(i)); if (i < SizeOf(i)) or (i > FileSize(f)) then Exit; Seek(F, FileSize(F) - i); SetLength(Result, i - SizeOf(i)); BlockRead(F, Result[1], Length(Result)); finally CloseFile(F); end; end;[...]
Ok!. Teraz tylko procedurka czytania:
[...]res:=explode(LoadFromExe('Nazwa.exe'),']');[ ...]
A wywolujesz pierwszy edit, tak:
TForm1.Button1Click(Sender: TObject); begin Edit1.Text := res[0]; end;
I, tak wlasnie wczytales, zapisany Edit, do Edita w drugim programie :)
Pozdro.
No teraz już wszystko wiem , dzięki :D
Tylko właśnie mam problem z tym opisem w THGG :)
Nie wiem za bardzo o co ci chodzi...
Ale, tam wspomniales, zeby program nie zamykal sie przed wykonaniem procedury. Musisz poprostu dac procke pod OnCloseQuery. Program wykona procedury przed zamknieciem programu. Dajmy na to:
CanClose:=False;
Wtedy, przed zamknieciem programu, program nie pozwoli na jego zamkniecie :P
Pozdr.
Użytkownik Shooter edytował ten post 08 luty 2006, 20:31
Shooter w twoim przykładzie jest błąd: po pierwsze nie wspomniałeś że do pliku w którym chcemy zapisać do var trzeba dodać:
res : TTableString; (dziwne że znalazło się to w pierwszym pliku)
Poza tym coś żle jest w przykładzie który podałeś bo po naciśnięciu buttona w pliku w którym miało zapisać wyskakuje:
http://img420.images...86/error8kr.jpg
Kurcze fajnie by było żebyś poprawił bo to przejrzyście napisana instrukcja :) (tylko szkoda że ten error wyskakuje :( )
Użytkownik dddman edytował ten post 09 luty 2006, 21:40
Nie mozesz tego uzyc w trakcie dzialania programu :P
Nie mozesz tego uzyc w trakcie dzialania programu, do ktorego zapisujesz :P

nie pisz posta pod postem :]
Pewnie możesz sobie dopisać do dowolnego pliku, tylko nie do aktualnie odpalonego (logiczne)