Autor Téma: parameter funkcie void type  (Přečteno 366 krát)

Offline miro.pp

  • Nováček
  • *
  • Příspěvků: 6
  • Karma: 0
    • Verze Delphi: RAD Studio XE5
parameter funkcie void type
« kdy: 01-12-2022, 21:08:36 »
Prechazam na delphi z c++ builder. prepisujem cast aplikacie z c++ do delphi.
pouzivam tam na seriovu komunikaciu komponentu CPportLib
funkcia write a read mi v C++ fungovala bez problemov. Na udaje ukazoval smernik na pole char.

pre delphi je funkcia definovana ako :

TcustomComPort.Write(void type, integer)
function Write(Const Buffer, Count integer

TcustomComPort.Reade(void type@, integer)
function Read(var Buffer; Count: Integer): Integer;

Funkcie write / read davaju nespravne udaje.
Viete ni poradit, ako zadat prvy parameter pre funkciu read / write v Delphi ?
PS: ak pouzivam WriteLn, ReadLn a udaje zadavam v stringu ide to v poriadku.
Dakujem za odpoved :-)




Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7424
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:parameter funkcie void type
« Odpověď #1 kdy: 01-12-2022, 21:26:33 »
Nabudúce:
Nesluší sa dávať otázku na dve fóra naraz. Ak už to urobíš, tak to máš oznámiť a dať odkaz.
Poradiť neviem.
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1586
  • Karma: 52
    • Verze Delphi: 11.3
Re:parameter funkcie void type
« Odpověď #2 kdy: 01-12-2022, 21:35:02 »
Já tady vidím:
    function Write(const Buffer; Count: Integer): Integer;

Co tam předáváš jako ten první parametr? Pokud to je string (nebo array of char apod.), bude možná problém v tom, že v současných Delphi je jeden znak (char) v tom stringu tvořen dvěma bajty.

Mohlo by fungovat třeba:
var Buf: array[0..1023] of AnsiChar;
...
ComPort.Write(Buf[0], 1024);

Offline miro.pp

  • Nováček
  • *
  • Příspěvků: 6
  • Karma: 0
    • Verze Delphi: RAD Studio XE5
Re:parameter funkcie void type
« Odpověď #3 kdy: 01-12-2022, 21:53:41 »
dakujem za odpoved, vyskusam :-)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3514
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:parameter funkcie void type
« Odpověď #4 kdy: 02-12-2022, 09:14:51 »
Já tady vidím:
    function Write(const Buffer; Count: Integer): Integer;

Co tam předáváš jako ten první parametr? Pokud to je string (nebo array of char apod.), bude možná problém v tom, že v současných Delphi je jeden znak (char) v tom stringu tvořen dvěma bajty.

Mohlo by fungovat třeba:
var Buf: array[0..1023] of AnsiChar;
...
ComPort.Write(Buf[0], 1024);

pokud je buf string pak
nebo ComPort.Write(AnsiString(buf)[1], Length(buf))
a to si zabal do nejake procedury




Embarcadero MVP - Czech republic