Errore di una funzione nell'eseguibile. (VB6)

di il
10 risposte

Errore di una funzione nell'eseguibile. (VB6)

Buongiorno e... un saluto a tutti (mi sono appena iscritto)

Ho un problema riguardo una funzione che, nell'ambiente di progettazione funziona (è il caricamento di un'immagine in una picturebox, tramite una funzione trovata tempo fa su un altro forum

Private Declare Function GdipLoadImageFromFile Lib "gdiplus.dll" (ByVal FileName As Long, GpImage As Long) As Long

), ma dall'eseguibile dà errore. Anche nello stesso pc dove c'è VB6.

Cosa sto...sbagliando?

   Grazie

10 Risposte

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    Quale errore? Come la usi?

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    Buongiorno Oregon,

    la uso così

        If GdipLoadImageFromFile(StrPtr(Trim(PicFile)), Img) <> 0 Then
            Err.Raise 999, "GDI+ Module", "Error loading picture " & PicFile
            Exit Function
        End If

    Ho pensato di usare questa soluzione in quanto le immagini che vado ad utilizzare, potrebbero essere a 64bit, per cui non me le carica.

    Ripeto: se vado in esecuzione del programma non ho nessun problema. L'eseguibile compilato, invece va in errore a sull' IF.

    Sicuramente è la funzione StrPtr che mi crea il problema (non capisco perchè in runtime funge. 

    Queste istruzioni le ho riprese togliendole da una procedura di stampa. Se, dall'eseguibile, faccio una stampa (quindi lancio anche una semplice print, non mi dà errore.

          Se che con le Sue immense conoscenze, Oregon, riuscirà a farmi capire dove sto sbagliando, o meglio, come devo modifcare la funzione.

             Grazie

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    Ma che immense conoscenze, lasciamo perdere...

    Piuttosto cosa c'è in PicFile? Hai inserito anche il percorso o solo il nome del file? Dove sta il file? Perchè la Trim?

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    23/08/2025 - oregon ha scritto:

    Ma che immense conoscenze, lasciamo perdere...

    Piuttosto cosa c'è in PicFile? Hai inserito anche il percorso o solo il nome del file? Dove sta il file? Perchè la Trim?

    La funzione e quant'altro dichiarazioni etc. lo avevo trovato su un altro forum (non so se posso citarlo). C'era tutto un modulo completo.

    Sì, in Picfile, c'è il percorso completo. Comunque, le cose strane sono 2:

    1. in run time non mi da errore
    2. dall'EXE, non dà errore se è all'interno di una stampa. (io lo sto usando, in questo caso per stampare un elenco di prodotti, CODICE, DESCRIZIONE, e, se presente in una certa cartella, la relativa immagine.

       All'interno della stampa non mi da nessun problema. 

      Richiamando invece, la stessa istruzione, ma per popolare la picture, SE PRIMA NON HO FATTO UNA STAMPA, ANCHE SOLO UNA PRINT VUOTA, mi va in errore nell'istruzione

    If GdipLoadImageFromFile(StrPtr(Trim(PicFile)), Img) <> 0 Then
  • Re: Errore di una funzione nell'eseguibile. (VB6)

    Ti avevo chiesto come avevi messo il nome e il percorso del file in Picfile...lo mostri il codice?

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    24/08/2025 - oregon ha scritto:

    Ti avevo chiesto come avevi messo il nome e il percorso del file in Picfile...lo mostri il codice?

    scusa, avevo capito più....semplice.

                  descrizione = comimm
                  Picture1.Picture = LoadPictureGDIPlus(descrizione, , , vbWhite)

      e sub (parte iniziale, tanto va subito in erore (A MENO CHE NON ABBIA FATTO UNA PRINT, anche in ALTRA ROUTINE)

    ricordando dichiarazione (usata che interessa il problema)

    Private Declare Function GdipLoadImageFromFile Lib "gdiplus.dll" (ByVal FileName As Long, GpImage As Long) As Long

    Altrimenti, nel modulo ho altre dichiarazioni... devo postarle?

    Public Function LoadPictureGDIPlus(PicFile As String, Optional Width As Long = -1, Optional Height As Long = -1, Optional ByVal BackColor As Long = vbWhite, Optional RetainRatio As Boolean = False) As IPicture
       Dim hDC     As Long
       Dim hBitmap As Long
       Dim Img     As Long
        
       ' Load the image
      On Error GoTo 1
       
    
       
       If GdipLoadImageFromFile(StrPtr(Trim(PicFile)), Img) <> 0 Then
           Err.Raise 999, "GDI+ Module", "Error loading picture " & PicFile
           Exit Function
       End If
        .
        .
       .
    end function

      Spero di aver dato la giusta risposta, questa volta.

       Se preferisci, posso inivarti il modulo,  magari in privato per non caricare troppo la chat...

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    Cosa è comimm in

    descrizione = comimm

    ?

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    24/08/2025 - oregon ha scritto:

    comimm

    Chiedo scusa, nel compilare la risposta, lo avevo scritto ma poi me l'ho cancellato per aggiungere, prima la dichiarazione per cercare di elencare le cose meglio

     dovevo scrivere

     descrizione = percorso_immagine
                  Picture1.Picture = LoadPictureGDIPlus(descrizione, , , vbWhite)

     ..infatti nella mia testa comimm sta per "comodo immagine"

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    Non ci capiamo. Cosa c'è esattamente dentro la variabile percorso_immagine?

    Esattamente cosa?

    È possibile saperlo?

  • Re: Errore di una funzione nell'eseguibile. (VB6)

    Scusa.. il percorso del file, ovvero, esempio "C:\lavoro\immagini\piano120.jpg"

    Comunque, non per essere ripetitivo, ma se faccio una qualsiasi stampa, e poi lancio la procedura per la visualizzazione nella picturebox (della stessa immagine, stesso percorso), NON VA IN ERRORE.

Devi accedere o registrarti per scrivere nel forum
10 risposte