[T.Pascal7]BIOS pristup na disketu alias "AX nie je AH!

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod JM 29. 7. 2006 23:16

Move(ReadBuf,T,SizeOf(ReadBuf)); {inverzna funkcia}
Vždyť ReadBuf je větší než ten řetězec. SizeOf(ReadBuf) je 512 byte, SizeOf(T) je 256, takže tímhle bys přepsal dalších 256 byte za tím stringem. S Move() se musí opatrně.

A navíc:
Move(S[1],WriteBuf,...);
Move(ReadBuf,T,...); {inverzna funkcia}
Není tady něco trochu jinak?

Kód: Vybrat vše
var S, T: String;
i: integer;
WriteBuf,ReadBuf: array[0..512] of Byte;
.....
S := 'Ahoj'#0; {#0 jako ukoncovaci znak}
if Length(S) >= SizeOf(WriteBuf) then Move(S[1],WriteBuf,Length(S)) else Move(S[1],WriteBuf,SizeOf(WriteBuf));
RawWrite(1,1,79,1,WriteBuf);
RawRead(1,1,79,1,ReadBuf);
T[0] := Chr(High(T)); {delka T na maximum}
Move(WriteBuf,T[1],Length(T)); {pouziti Length(T) ve spojeni s predchozim radkem prave zaruci, ze se nic za tim retezcem neprepise}
i := Pos(#0,T); {pozice #0 v retezci}
if i <> 0 then T[0] := Chr(i-1); {Kdyz tam #0 je, delka bude o jednu mensi nez jeho pozice, jinak zustane na maximu}
WriteStr(T);
ReadKey;
end;

Otazka je, jestli funguje RawWrite + RawRead


...necitam moc napovedy v BP...
Neber to osobně, ale je to zřejmé.
JM
Junior
Uživatelský avatar

Odeslat příspěvekod inflater 30. 7. 2006 09:30

Bol som moc zvyknuty na GUI, formulare, tlacitka atd. (Delphi 7) a preto som teraz obycajny konzolovy syntax pekne zabudol. Vlastne - a pracoval som s Pascalovskym konzolovym syntaxom niekedy? Nie... prva aplikacia bola v Delphi 7.
RawWrite a RawRead funguju (exception handler funguje) takze ak je OK procedura tak je OK aj cely zapis.
Pocuj, JM, ak mas ICQ, posli mi spravu. Poslem ti moje ICQ#. Vies, nechcem stale "spamovat" forum, kedze mi to akosi teraz pri zvyknuti na Delphi, nejde.

P.S. Skusal som namiesto SizeOf(Buffer) nasackovat 256, kedze viem, ze Buffer ma velkost 512 a String 256 (prave si mi to napisal). Ale aj tak to pred tym vypisalo nieco kuriozne (aspon vidim ze funguje RawRead).

inflater
inflater
Junior
Uživatelský avatar

Předchozí stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků