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

    [VB] Catalogatore file in Visual Basic

    Ciao a tutti.
    Scusate questo post, in realtà non sviluppo in Visual Basic quindi vi scrivo solo se potete darmi una mano a risolvere un problema con questo linguaggio che ho da parecchio tempo pur non utilizzandolo praticamente mai.

    In pratica utilizzo un catalogatore di immagini chiamato MyAlbumPro che permette di catalogare le foto in base a campi personalizzati.
    Ora nel programma è insito uno script visual basic che permette di fare il sort delle immagini basandosi su questi due campi, ma io vorrei estenderli a 4 visto che 2 sono davvero troppo pochi per le mie esigenze.

    Il titolare del programma non da segni di vita, perciò mi rivolgo a voi per i quali probabilmente mettere le mani sarà uno scherzo...

    Ecco il codice di quello che fa il sort su due campi personalizzati (nel caso MAteriale e Luogo di scatto); come potrei procedere per aggiungerne altri due ??

    Grazie per le eventuali risposte !!

    __________________________________________________ __
    Option Explicit

    app.ClearTrace

    dim alb, sCF1, sCF2
    set alb = app.GetCurrentAlbum
    sCF1 = "Materiale" ' Primary sort key
    sCF2 = "Luogo di scatto" ' Secondary sort key

    dim s, k
    s = "This script will sort the current album using the custom fields '"
    s = s & sCF1 & "' and '" & sCF2 & "'" & chr(13)
    s = s & "This album will be used: " & alb.sAlbumTitle & " (" & alb.FullName & ")" & chr(13)
    s = s & "Click Yes to proceed" & chr(13)
    s = s & "Click No to abort"
    k = MsgBox( s, vbYesNo, "SortOnCF" )

    if k = vbYes then

    dim i, nbPic, pic, pic2, nDone, d1, d2
    nbPic = alb.nbPicture
    app.Trace "Pictures to process: " & nbPic

    ' Very simple sort using two loops
    app.Trace "Started at: " & Time
    do
    nDone = 0
    for i = 0 to nbPic-2
    Set pic = alb.GetPicture(i)
    Set pic2 = alb.GetPicture(i+1)
    d1 = pic.GetCustomField(sCF1)
    d2 = pic2.GetCustomField(sCF1)
    'app.Trace d1 & " " & d2
    if d2 < d1 then
    alb.MovePicture pic2, i, False
    nDone = nDone + 1
    else
    if (d2 = d1) and (pic2.GetCustomField(sCF2) < pic.GetCustomField(sCF2)) then
    alb.MovePicture pic2, i, False
    nDone = nDone + 1
    end if
    end if
    next
    app.Trace "Sorting... " & nDone & " pictures moved"
    loop until nDone = 0

    alb.Redraw
    app.Trace "Finished at: " & Time
    app.Trace "Done !"
    end if
    __________________________________________________ _____

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    A quale versione di Visual Basic fai riferimento?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ciao !
    Come ti dicevo non ne ho la benchè minima idea, VB non lo conosco affatto...

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da micropalla
    Come ti dicevo non ne ho la benchè minima idea, VB non lo conosco affatto...
    Scusa, ma se chiedi di apportare modifiche al codice, significa che prima o poi lo compilerai in qualche modo creando un eseguibile aggiornato.

    Se non sai tu con quale programma compilare il codice in tuo possesso, chi può saperlo?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    Originariamente inviato da alka
    ...
    Se non sai tu con quale programma compilare il codice in tuo possesso, chi può saperlo?
    E se non dovesse compilarlo? Magari è un vbs ...
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  6. #6
    Guarda, so che il programma esegue direttamente uno script visual basic, quindi sarebbe solo da modificare questo dicendogli in pratica che non esistono due campi personalizzati ma 4, e che quindi deve iniziare ad ordinare le foto come fa ora ma non si deve fermare al secondo campo ma se il primo è uguale e il secondo pure, deve andare al terzo; li se è uguale andare al 4 altrimenti fermarsi...

    In pratica il loppo che fa ora come si vede dal codice deve farlo con 4 elementi anzichè due...

    Non so se sono riuscito a spiegarmi...

  7. #7
    Infatti è un vbs !!
    Che dovevo dirvelo prima ???

  8. #8
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    potresti ripostare il codice usando il bottone CODE?
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  9. #9
    Ci provo

    codice:
    Option Explicit
    
    app.ClearTrace
    
    dim alb, sCF1, sCF2
    set alb = app.GetCurrentAlbum
    sCF1 = "Materiale" ' Primary sort key
    sCF2 = "Luogo di scatto" ' Secondary sort key
    
    dim s, k
    s = "This script will sort the current album using the custom fields '"
    s = s & sCF1 & "' and '" & sCF2 & "'" & chr(13)
    s = s & "This album will be used: " & alb.sAlbumTitle & " (" & alb.FullName & ")" & chr(13)
    s = s & "Click Yes to proceed" & chr(13)
    s = s & "Click No to abort"
    k = MsgBox( s, vbYesNo, "SortOnCF" )
    
    if k = vbYes then
    
    dim i, nbPic, pic, pic2, nDone, d1, d2
    nbPic = alb.nbPicture
    app.Trace "Pictures to process: " & nbPic
    
    ' Very simple sort using two loops
    app.Trace "Started at: " & Time
    do
    nDone = 0
    for i = 0 to nbPic-2
    Set pic = alb.GetPicture(i)
    Set pic2 = alb.GetPicture(i+1)
    d1 = pic.GetCustomField(sCF1)
    d2 = pic2.GetCustomField(sCF1)
    'app.Trace d1 & " " & d2
    if d2 < d1 then
    alb.MovePicture pic2, i, False
    nDone = nDone + 1
    else
    if (d2 = d1) and (pic2.GetCustomField(sCF2) < pic.GetCustomField(sCF2)) then
    alb.MovePicture pic2, i, False
    nDone = nDone + 1
    end if
    end if
    next
    app.Trace "Sorting... " & nDone & " pictures moved"
    loop until nDone = 0
    
    alb.Redraw
    app.Trace "Finished at: " & Time
    app.Trace "Done !"
    end if

  10. #10
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    Originariamente inviato da micropalla
    Infatti è un vbs !!
    Che dovevo dirvelo prima ???
    Si! :rollo: Probabilmente ti diranno che 6 nel forum sbagliato
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

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.