Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560

    [VB6] Un dubbio sulla funzione lstrcmp

    Ciao a tutti,
    su un esempio di codice VB ho trovato la funzione LSTRCMP per confrontare due stringhe contenenti due file in binario.
    Certe volte mi dice che le stringhe sono uguali quando invece str1 = str2 mi da chesono diverse e in effetti lo sono veramente...

    Ho cercato sul sito microsoft ma nonho trovato info...
    A cosa serve esattamente LSTRCMP? Evidentemente non verifica se le stringhe sono uguali...

    grazie

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    veramente io, in VB conosco la funzione StrComp, non LStrCmp.

    la StrComp esegue un confronto tra 2 stringhe, e la sua sintassi prevede 3 argomenti di cui 1 facoltativo.

    il terzo parametro (facoltativo) permette di impostare se il tipo di controllo viene effettuato come Testo o come Binario.

    quindi:

    A = STRComp("pippo","PIPPO",vbBinaryCompare) -> restituisce 1
    A = STRComp("pippo","PIPPO",vbTextCompare) -> restituisce 0

    Boolean

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma parli di una funzione definita nell'esempio di codice che hai scaricato o di una funzione nativa di VB ...?

    Penso proprio si tratti del primo caso ...

  4. #4
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    Si non è di VB, eccola:

    Public Declare Function lstrcmp Lib "kernel32" Alias "lstrcmpiA" ( _
    ByVal lpString1 As String, _
    ByVal lpString2 As String) As Long

    Ma questa non ha il terzo parametro...

    Ma se uso con STRComp il vbBinaryCompare, il comportamento è come se usassi Str1 = Str2... dov'è la differenza? In cosa sono migliori queste funzioni del kernel?

    Ciao e grazie

  5. #5
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Originariamente inviato da ghini76
    Si non è di VB, eccola:

    Public Declare Function lstrcmp Lib "kernel32" Alias "lstrcmpiA" ( _
    ByVal lpString1 As String, _
    ByVal lpString2 As String) As Long

    Ma questa non ha il terzo parametro...
    probabilmente hai fatto un po' di confusione

    dichiari lstrcmp, ma nell'alias hai la lstrcmpiA...

    lstrcmp e lstrcmpi sono 2 funzioni analoghe, ma la prima è case sensitive, mentre la seconda non lo è.
    in pratica sono le equivalenti della StrComp di VB, ovvero:

    StrComp + vbTextCompare = lstrcmp

    StrComp + vbBinaryCompare = lstrcmpi


    Originariamente inviato da ghini76
    Ma se uso con STRComp il vbBinaryCompare, il comportamento è come se usassi Str1 = Str2... dov'è la differenza? In cosa sono migliori queste funzioni del kernel?
    no... Str1 = Str2 è come usare la StrComp con il parametro vbTextCompare, oppure la lstrcmp

    c'è inoltre da dire che lstrcmp e lstrcmpi, per funzionare correttamente hanno bisogno di stringhe a terminazione null, altrimenti potrebbero dare risultati inattesi.

    Boolean

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ok ... la lstrcmp la conoscevo ...

    A prescindere dal fatto che esistano diverse versioni (che ignorano o meno il case), anch'io mi chiedo capisco a cosa possa servire all'interno di comune codice VB ...

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.