Mam takie pytanie widze że Write działa szybciej niż WriteStr dlatego chcę załadować do Write zmienne typy bajt np.:
for i :=1 to 125 do
begin
ComPort1.Write (i, 1);
end;
jak zamienić tan kod na poprawny?
Mam takie pytanie widze że Write działa szybciej niż WriteStr dlatego chcę załadować do Write zmienne typy bajt np.:
for i :=1 to 125 do
begin
ComPort1.Write (i, 1);
end;
jak zamienić tan kod na poprawny?
TomekMus napisał(a)
Mam takie pytanie widze że Write działa szybciej niż WriteStr
jakoś smiem wątpić, czy szybciej...
// perform synchronous write operation
function TCustomComPort.Write(const Buffer; Count: Integer): Integer;
var
AsyncPtr: PAsync;
begin
InitAsync(AsyncPtr);
try
WriteAsync(Buffer, Count, AsyncPtr);
Result := WaitForAsync(AsyncPtr);
finally
DoneAsync(AsyncPtr);
end;
end;
// perform asynchronous write operation
function TCustomComPort.WriteStrAsync(const Str: string; var AsyncPtr: PAsync): Integer;
begin
if Length(Str) > 0 then
Result := WriteAsync(Str[1], Length(Str), AsyncPtr)
else
Result := 0;
end;
// perform synchronous write operation
function TCustomComPort.WriteStr(const Str: string): Integer;
var
AsyncPtr: PAsync;
begin
InitAsync(AsyncPtr);
try
WriteStrAsync(Str, AsyncPtr);
Result := WaitForAsync(AsyncPtr);
finally
DoneAsync(AsyncPtr);
end;
end;
Koledzy Ord nie działa do tej funkcji, ponieważ ja chce wysłać bajt za pomocą
ComPort.Write (Buffer:PAnsiChar; Caunt:Integer);
Jak zapisuje ComPort.Write (#100, 1) to działa !!!
A jak zapisze:
var
B : Byte;
begin
B:=10;
ComPort.Write (Char(B), 1);// to kicha nie dział nie kompiluje się
ComPort.Write (PChar(B), 1);
//to kompiluje lecz jak tylko w programie jest wywołana funkcja to się zawiesza i wyskakuje błąd
end;
Nie wiem jakiego typu wartości oczekuje w pierwszym parametrze ta funkcja Write? Jeżeli Char to użyj Chr.
Jak się nie myle to PAnsiChar lecz jako bufor 1024bajtowy
Chr też nie działa