Fórum Erro na Funcao WriteFile #326035
24/07/2006
0
[b:429dc6e0c8]aki está a funcao:[/b:429dc6e0c8]
Private
FWriteOS: TOverlapped;
...
function TCustomComm.Write(const Buf; Count: Integer): Integer;
begin
FillChar(FWriteOS, Sizeof(FWriteOS), 0);
if not WriteFile(FHandle, Buf, Count, Result, @FWriteOS) then
Result := -1;
end;
[b:429dc6e0c8]aki está o Erro:[/b:429dc6e0c8]
Types of actual and formal var parameters must be indetifical
Obs.: Este erro está acontecendo na função WriteFile.
Se alguém puder me ajudar ficarei grato.
Gilmar Paiva
Megsoft
Curtir tópico
+ 0Posts
25/07/2006
Micheus
Gostei + 0
25/07/2006
Megsoft
Gostei + 0
25/07/2006
Antseralves
´reservada´ para retorno de funções. Declare a variavel [b:db5743aa84]Res[/b:db5743aa84] como:
var Res : ^DWord;
Na função faça :
[b:db5743aa84]if not WriteFile(FHandle, Buf, Count, Res^, @FWriteOS) then....[/b:db5743aa84].
Acho que vai compilar..
Gostei + 0
26/07/2006
Micheus
Mas, alterar o retorno da função para DWORD não resolverá o problema, porque a seguir há uma atribuição a result de um valor que não é válido para este tipo (-1). A saída é realmente declarar uma variável para esta finalidade conforme vc sugeriu. Porém, seria conveniente que ela fosse declarada apenas: var Res :DWord;
A utilização do ^, faz com que essa variável seja do tipo ponteiro para um DWORD, ou seja, possui o endereço de uma área de memória que conterá um DWORD. Entretanto, se esta área não for previamente alocada poderá haver algum efeito colateral. :(
Sobre declaração de Functions no help:
[i:a5fffb2f14]Every function implicitly has a local variable Result of the same type as the function´s return value.[/i:a5fffb2f14]
Traduzindo...:
[i:a5fffb2f14]Cada função tem implicitamente um variável local Result do mesmo tipo do valor retornado pela função.[/i:a5fffb2f14]
[]s
Gostei + 0
26/07/2006
Massuda
Para comunicação serial tem estes que são gratuitos com fontes:[list:8b4009a4f5][*:8b4009a4f5][url=http://sourceforge.net/projects/tpapro/]AsyncPro[/url]: uma das melhores bibliotecas para comunicação serial[*:8b4009a4f5][url=http://sourceforge.net/projects/comport/]ComPort[/url]: uma biblioteca freeware muito popular[*:8b4009a4f5][url=http://www.ararat.cz/synapse/]SynaSer[/url]: biblioteca de classes para comunicação serial[/list:u:8b4009a4f5]
Gostei + 0
26/07/2006
Megsoft
Tem toda razão, eu só estou utilizando este componente pq o caso era de estrema urgência e aplicação já estava funcionando com ele.
Gostei + 0