Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C++] Convertire un ReadFile() buffer

    Ciao ragazzi!

    Oggi ho bisogno di aiuto. come mi posso convertire un (char *)buffer da ReadFile cosi lo output mi posso inviare ad un Dialog del WinAPI?

    Grazie a mille!
    Dennis M.
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non ci ho capito nulla ... ma che hai detto?

    P.S. Devi anche indicare il linguaggio nel titolo ... vedi regolamento.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    beh mi usare il funziona ReadFile di Windows.

    codice:
    BOOL WINAPI ReadFile(
      __in         HANDLE hFile,
      __out        LPVOID lpBuffer,
      __in         DWORD nNumberOfBytesToRead,
      __out_opt    LPDWORD lpNumberOfBytesRead,
      __inout_opt  LPOVERLAPPED lpOverlapped
    );
    l'ho letto informazione da un pipe. cmq mi vorrei per inviare che output (solo il testo) ad un HWND (CreateWindowEx(0,"edit ...)). mi posso inviare l'informazione ad il Dialog senza ogni problema ma anche si invia piЫ di solo testo.

    Mi spiego

    Vorrei:
    codice:
    some output...'Hola Mondo' means...
    
    Hello word!
    Ma l'ho
    codice:
    some output...'Hola Mondo' means...
    
    Hello word!лллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл$
    Ciao
    Dennis M.
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    ReadFile restituisce il numero di caratteri letti in lpNumberOfBytesRead.
    Devi usare quel valore per mettere il NULL alla stringa.

    codice:
    char buffer[256];
    DWORD bytesRead=0;
    ReadFile(hfile, buffer, 256, &bytesRead,NULL);
    buffer[bytesRead] = NULL;
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Concordo con shodan ...

    P.S. I traduttori automatici NON funzionano ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    non uso un traddutore XD il mio italiano Х solo male :P

    capisco ma non Х il mio problema.

    vedi
    codice:
    	DWORD dwRead;
    	char chBuf[BUFSIZE], currentBuf[BUFSIZE];
    	int textlen;
    	BOOL bSuccess = FALSE;
    	HWND cText;
    
    		cText  = ::GetDlgItem(global,IDO_WORLDOUT);
    		textlen = ::GetWindowTextLengthA(cText);
    		::GetDlgItemTextA(global,IDO_WORLDOUT,currentBuf,textlen+1);
    
    		::ReadFile(_hChild_Out_Rd, chBuf, BUFSIZE, &dwRead, NULL);
    
    		strcat(currentBuf, chBuf);
    		::SetDlgItemTextA(global,IDO_WORLDOUT,currentBuf);
    Ciao
    Dennis M.
    Nuovo Blog di Programmazione! (Lo ha i tutti tipi! PHP e C/C++)
    Per piacere lo supporti!

  7. #7
    Il problema Х proprio quello, invece; se la stringa che leggi non Х NUL-terminata, devi aggiungere tu il NUL finale; basta inserire, subito dopo la ReadFile
    codice:
    chBuf[dwRead-1]=0;
    Tra parentesi, la chiamata a GetDlgItemTextA non dovrebbe specificare textlen+1, ma BUFSIZE, dato che il buffer che usi Х grande BUFSIZE, non textlen. Se per caso textlen fosse piЫ grande di BUFSIZE con il tuo codice ti ritroveresti con un buffer overflow, mentre con il codice corretto avresti una stringa troncata.
    In realtЮ l'approccio migliore se vuoi andare sul sicuro sarebbe allocare dinamicamente la memoria necessaria per la stringa.
    Originariamente inviato da DennisM
    non uso un traddutore XD il mio italiano Х solo male :P
    Un suggerimento al volo: nella maggior parte dei casi (questo in particolare) "bad" si traduce come "cattivo", non come "male".
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.