Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    shfileoperation

    Ciao a tutti.
    Questo è un pezzo del mio codice

    codice:
    SHFILEOPSTRUCT FileOp;
    FileOp.hwnd = NULL; 
    FileOp.wFunc = FO_COPY; 
    FileOp.pFrom = "C:\\cygwin\\home\\miacartella\\voxforge_2\\auto\\scripts";
    FileOp.pTo = percorso/*"C:\\cygwin\\home\\Profiles\\prova4"*/;
    FileOp.fFlags = FOF_NOCONFIRMATION ;
    SHFileOperation(&FileOp);
    percorso è un array contenente il path della cartella dove voglio andare a copiare la mia cartella scripts contenuta in auto.
    Se al posto di percorso utilizzo il percorso completo tra virgolette, la mia cartella viene copiata correttamente. Se al posto delle virgolette metto semplicemente l'array percorso, non succede niente.
    Chi mi può aiutare?!
    Un saluto a tutti!!

  2. #2
    1° errore: linguaggio nel titolo

    2° errore: hai già aperto un post sullo stesso argomento, non si può aprirne un altro

    3° errore: se anche l'argomento della discussione fosse diverso, è buona regola e soprattutto segno di rispetto verso coloro che ti aiutano, far sapere se il problema si è risolto oppure no


    Nella discussione hai omesso ciò che è fondamentale: che tipo di array è il tuo? Come lo inizializzi?
    Così come hai postato non si capisce..


    Ciao

  3. #3
    Allora mi scuso subito!!
    Non mi ricordavo neanche di aver già aperto un tpoic simile.
    Mi dispiace davvero.
    L'array percorso viene inizializzato in questo modo
    codice:
    GetModuleFileName(NULL,percorso,BUFSIZE);                            
    for (int i=strlen(percorso); i>0; i--)
        {
        if (percorso[i]!='\\')
           {
           percorso[i]=NULL;
           }
        else
            break;
        }
    char temporaneo[]="Profiles";  
    strcat(percorso,temporaneo);
    strcat(percorso,"\\");
    strcat(percorso,nome);
    chdir(percorso);
    cout << percorso;
    getmodulefilename prende il percorso in cui si trova il mio file eseguibile e lo mette nell array percorso.
    Successivamente nel ciclo for non faccio altro che cancellare tutta la parte finale dell array fino al \.
    Al passaggio dopo incollo Profiles in fondo al mio array e ancora dopo incollo il nome della mia cartella.
    Spero di essermi spiegato.
    Mi scuso davvero ancora una volta.

  4. #4
    Originariamente inviato da Giovanni Pr88
    codice:
    cout << percorso;
    E questa riga di codice, che output dà? Perchè a seconda del tipo di output si può capire l'errore.

  5. #5
    L'avevo già verificata.
    Mi stampa il percorso corretto!!
    Infatti la cosa è alquanto strana, non capisco per quale motivo non funzioni...

  6. #6
    Ecco l'errore: trattandosi di array di char, devi appendere al tuo array anche il terminatore, ossia "\0".

    Fammi sapere


    Ciao

  7. #7
    Niente da fare.
    Non me lo prende lo stesso.

  8. #8
    Ehi, ho controllato solo ora il codice da te postato e mi sono accorto che non è corretto, come è possibile che non ricevessi nessun errore?
    Il tuo ciclo for non ti ritorna nessun errore?
    Ecco il codice corretto:
    codice:
      
    char percorso[255];
    GetModuleFileName(NULL, percorso, 255);
    strcat(percorso, "\0");
    for (int i=strlen(percorso)-1; i>0; i--)
        {
        if (percorso[i]!='\\')
           {
           percorso[i]= ' ';
           }
        else
            break;
        }

    Fammi sapere


    Ciao

  9. #9
    Non capisco alcune cose:
    -strcat(percorso, /0); che senso ha messo prima del for?!
    -ho usato percorso[i]!='\\' non percorso[i]!='\' altrimenti mi da errore.
    -se metto percorso[i]=' ' tutte le volte mi crea degli spazi e dunque il percorso viene sbagliato. mettendo invece percorso[i]=NULL mi da un warning ma il percorso viene creato correttamente...
    Altre idee?!
    Intanto ti ringrazio per la disponibilità e l'aiuto...

  10. #10
    Il codice che ho postato è corretto, sta a te adattarlo. Io ho utilizzato questo ' ' in quanto l'uso di NULL è scorretto, in teoria dovresti ridimensionare il tuo array (ovviamente diminuire le dimensioni dell'array).

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.