Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569

    [VB]forse mi sono perso qlcosa..

    preso da www.allapi.net (mitico sito!!)

    codice:
    'example by Donavon Kuhn (Donavon.Kuhn@Nextel.com)
    Private Const MAX_COMPUTERNAME_LENGTH As Long = 31
    Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Sub Form_Load()
        Dim dwLen As Long
        Dim strString As String
        'Create a buffer
        dwLen = MAX_COMPUTERNAME_LENGTH + 1
        strString = String(dwLen, "X")
        'Get the computer name
        GetComputerName strString, dwLen
        'get only the actual data
        strString = Left(strString, dwLen)
        'Show the computer name
        MsgBox strString
    End Sub
    io ora mi chiedo un cosa.. se il parametro lpBuffer è passato ByVal, come può la funzione metterci il nome del Computer??
    nel senso: se il passaggio è ByVal-->per copia come può la funzione scriverci dentro?? non dovrebbe essere passata ByRef??

    Siccome il codice funziona, in quello che dico c'è "something wrong"..
    forse non ho capito bene qlcosina.. potreste svelarmi l'arcano?

    Ciao!!


  2. #2
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    dai.. una rispostina.. anche piccolina..

    :gren:



  3. #3
    semplicemente perchè passandogli anche una lunghezza buffer non ha bisogno di un indirizzo di memorie ma di uno spazio fisico dove scrivere se infatti prima non riempi la variabile la funzione crea problemi
    in più la funzione si protegge dall'invio a un indirizzo di memoria ad essa non raggiungibile
    infatti se esiste la stringa è sicura che l'area di memoria che le serve per produrre un risultato è sufficiente ed è raggiungibile
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  4. #4
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    forse non ho capito bene la tua risposta..
    se io non gli passo l'indirizzo con un byref la funzione come fa fisicamene a scrivere nella MIA variabile..?? la funzione non ha l'indirizzo quindi non sa dove scrivere.. giusto?!


  5. #5
    Originariamente inviato da Gigi84
    forse non ho capito bene la tua risposta..
    se io non gli passo l'indirizzo con un byref la funzione come fa fisicamene a scrivere nella MIA variabile..?? la funzione non ha l'indirizzo quindi non sa dove scrivere.. giusto?!

    perchè va a sovrascrivere il contenuto di lpbuffer indipendente mente dalla sua allocazione di memoria che potrebbe essere riservata alla tua applicazione quindi la dll non avrebbe accesso
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  6. #6
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    e come fa se non sa dov'è??
    io le passo solo una copia..


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 © 2024 vBulletin Solutions, Inc. All rights reserved.