Mam małe pytanko: jak w Delphi edytować plik hexadecymalnie?
Tzn: Mam plik i muszę pod offset np. 0x00A0 zapisać FF
Jak to zrobić w Delphi ??
Mam małe pytanko: jak w Delphi edytować plik hexadecymalnie?
Tzn: Mam plik i muszę pod offset np. 0x00A0 zapisać FF
Jak to zrobić w Delphi ??
seek, write/blockwrite + F1
var
f:file;
b:byte;
begin
assignfile(f,'[ścieżka\]nazwpliku');
reset(f,1);
seek(f,$a0);
b:=$ff;
blockwrite(f,b,1);
closefile(f);
end.
// ciekaw jestem, co będzie dalej... blokada, czy usuwanie. heh
// mordobicie [boks] - ŁF
// Kulltury modelarzu :-P
Ooooo Ty.... - ŁF
;p
oj, bo się doigrasz - ŁF
waiting hehe
uważaj, do kogo rozmawiasz... - ŁF
oj bo cię spotka nagły zgniłek.
nas? bohaterów? pomidorami? a nieładnie, nieładnie - ŁF
Dzięki mądre głowy!
A teraz: stworzyłem procedurkę
procedure ZapiszDoPliku(var plik:string; offset,wartosc: byte );
{ Procka pobiera PLIK(nazwapliku) OFFSET i WARTOSC do zapisania pod niego }
{ Dzialanie: zapis do PLIKu WARTOSCi pod dany OFFSET}
var
f:file;
b:byte;
begin
assignfile(f, plik);
reset(f,1);
seek(f,offset);
b:=wartosc;
blockwrite(f,b,1);
closefile(f);
end;
i jak ją wywołuje: ZapiszDoPliku(Edit1.Text, Edit2.Text, Edit3.Text);
to wywala mi błąd konwersji string --> binary
Jaką instrukcją to zkonwertować??
StrToBin ??
ZapiszDoPliku(Edit1.Text, Edit2.Text, Edit3.Text);
ZapiszDoPliku(Edit1.Text, StrToInt(Edit2.Text), StrToInt(Edit3.Text));
wystarczy
[<font color="blue">DOPISANE</span>]
ups sorry ale o tym nie pomyslalem [wstyd]
ZapiszDoPliku(Edit1.Text, Edit2.Text, Edit3.Text);
ZapiszDoPliku(Edit1.Text, StrToInt(Edit2.Text), StrToInt(Edit3.Text));
wystarczy
A jeśli jako Edit2 mam np. A0FF a Edit3 FA to nie wywali bledu i skonvertuje to?
Zmień offset przede wszystkim na dword. A w strtoint...
StrToInt('$'+Edit2.Text).
Z poprzedniego postu powinieneś się domysleć, że znaczek dolara oznacza zapis hex.
Zmień offset przede wszystkim na dword. S w strtoint...
StrToInt('$'+Edit2.Text).
Z poprzedniego postu powinieneś się domysleć, że znaczek dolara oznacza zapis hex.
Hehe domyslilem sie :_)
PS: Ale po wpisaniu offsetu np. 04DF z dolarem ($0DF) to wyskakhuje mi blad cytat
[Error] glownyUnit.pas(105): Constant expression violates subrange bounds
[Error] glownyUnit.pas(105): Constant expression violates subrange bounds
Właśnie dlatego flabra ci napisał żebys zmienił offset na typ DWORD bo Byte ma zakres tylko do $FF
To znowu ja...
Dzięki za dotychczasową pomoc.
Mam jeszcze jedno pytanko: jak zmodyfikować kod tak, aby jeśli np. Edit1.Text jest równy 65535 to zapisuje FF pod OFFSETEM np. A0 i SĄSIEDNIM ??
procedure ZapiszDoPliku(plik:string;offset:longint;var buf;size:longint);
var f:file;
begin
assignfile(f, plik);
reset(f,1);
seek(f,offset);
blockwrite(f,buf,size);
closefile(f);
end;
EOT. Help jest pod f1, nikt za ciebie nie napisze programu.
// Sorry seek i blockwrite akceptują longinta (wg. helpa), choć dword byłby bardziej logiczny.
// Co wcale nie znaczy, że z dwordem nie będą poprawnie chodzić.