Oppure

Loading
25/07/08 10:33
dttah
Ho un programma che scatta screenshot a ripetizione. E ho fatto in modo che li rinomini in maniera random (asdi42123.jpg e simili) . Però vorrei che invece seguissero un ordine logico (1.jpg , 2.jpg , 3.jpg). Ovvero
If file.exist(path)
File.rename
il problema e che se esiste anche il secondo deve fare di nuovo la stessa cosa allora ho pensato ad un do loop solo che mi sto incasinando...

Dim lol As String = My.Computer.FileSystem.SpecialDirectories.MyPictures
Dim s As String = DateTime.Today.ToString("dd-MM-yyy";)
Dim num1 As String
Dim ext As String = ".jpg"
Dim path As String = My.Computer.FileSystem.SpecialDirectories.MyPictures + "\autoscr\" + s

aiutatemi O_O
Ultima modifica effettuata da dttah 25/07/08 12:38
aaa
25/07/08 14:21
pcprogrammer
io sono programmatrice (femmina) di C#, ma me la cavicchio anche in VB.NET, guarda se questo codice aggiunto al tuo può aiutarti:

Dim numeroFoto As Integer = 0
While File.Exist(path) = False
numeroFoto += 1
End While

se non dovesse funzionare o per dei chiarimenti mi trovi a questo indirizzo MSN:
pcprogrammer@hotmail.it

Ciao Ciao
aaa
25/07/08 18:40
dttah
Facendo in questo modo ( aggiungendo il codice che hai detto tu) mi si blocca il programma non so xkè non mi da manco l'eccezione.

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim lol As String
        lol = My.Computer.FileSystem.SpecialDirectories.MyPictures
        Dim s As String = DateTime.Today.ToString("dd-MM-yyy")

        Me.Opacity = 0

        Dim bounds As Rectangle

        Dim screenshot As Bitmap

        Dim graph As Graphics

        bounds = PictureBox1.Bounds

        screenshot = New Bitmap(bounds.Width, bounds.Height, Imaging.PixelFormat.Format32bppArgb)

        graph = Graphics.FromImage(screenshot)

        graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
        Dim numeroFoto As Integer = 0
        Dim path As String = My.Computer.FileSystem.SpecialDirectories.MyPictures + "\autoscr\" + s
        While File.Exists(path) = False
            numeroFoto += 1
        End While
        screenshot.Save(lol & "\autoscr\" & s & "\" & numeroFoto & ".jpg")


    End Sub


Il totem tu sei un pro aiutami T_T
Ultima modifica effettuata da dttah 25/07/08 18:41
aaa
25/07/08 18:49
pcprogrammer
non funziona perchè ti sei sbagliato, il mio codice non dovevi metterlo lì.
Contattami per msn: pcprogrammer@hotmail.it

se ci sentiamo ti metto a posto tutto io
aaa
25/07/08 18:54
dttah
ti ho aggiunto sono
andreas_n .. ecc ecc
aaa
26/07/08 9:06
Il Totem
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  Dim lol As String
  lol = My.Computer.FileSystem.SpecialDirectories.MyPictures
  Dim s As String = DateTime.Today.ToString("dd-MM-yyy")

  Me.Opacity = 0

  Dim bounds As Rectangle
  Dim screenshot As Bitmap
  Dim graph As Graphics

  bounds = PictureBox1.Bounds
  screenshot = New Bitmap(bounds.Width, bounds.Height, Imaging.PixelFormat.Format32bppArgb)
  graph = Graphics.FromImage(screenshot)
  graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)
        
  Static numeroFoto As Integer = 0
  Dim path As String = lol + "\autoscr\" + s + "\"
  Do 
    numeroFoto += 1
  Loop While File.Exists(path & "\" & numeroFoto & ".jpg")
  screenshot.Save(path & "\" & numeroFoto & ".jpg")
End Sub

Questo codice dovrebbe andare. Anche quello di pcprogrammer era sbagliato. Infatti, tu vuoi dare un ordine alle foto che vengono generate, quindi devi incrementare numeroFoto ad ogni screenshot: questo si può fare con una variabile static, che mantiene il proprio valore tra un tick e l'altro. Con il ciclo Do, l'indice viene aumentato di 1 per proseguire nell'ordine, ma se il file con quel numero esiste, allora prosegue nell'aumentare finché non trova un numero non ancora occupato, e lo salva.

Il codice di pcprogrammer, invece, aumentava l'indice solo se il file NON esisteva. Quindi se il file fosse esistito, l'avrebbe sovrascritto. Inoltre, poichè numeroFoto non era dichiarata Static il procedimento veniva ripetuto ad ogni tick, col risultato che tutti gli screenshot sovrascrivevano il primo.

P.S.: File.Exists deve essere usato su file, e non su percorsi, quindi File.Exists(path) non è un uso valido.
P.P.S.: hai controllato che la cartella path esista prima di procedere?
Ultima modifica effettuata da Il Totem 26/07/08 9:11
aaa
26/07/08 11:23
dttah
Totem sei un genio :D grazie dell'aiuto , avevo intuito che dovevo utilizzare un do loop ma non sapevo bene come strutturare il tutto. Senti un ultima cosa. Io avevo una combobox con dei numeri in millisecondi "10000" e volevo che praticamente il timer dipendesse dalla combobox (timer1.inteval).

Ho provato timer1.inteval = combobox.items ma mi dice questo:

Errore	1	Impossibile convertire il valore di tipo "System.Windows.Forms.ComboBox.ObjectCollection" in "Integer".	C:\Documents and Settings\Andrea\Documenti\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\Form1.vb	44	27	WindowsApplication1


Mentre se provo a fare combobox1.text mi legge il testo che gli attribuisco da visual studio se lo cambio manualmente rimane ugualmente quel testo. Grazie di tutto :)
Ultima modifica effettuata da dttah 26/07/08 11:24
aaa
26/07/08 14:00
Mte90
l'items non è in formato string.
devi scrivere combox.items.tostring e se dà problemi eguagliare questo codice ad una varibabile integer.
aaa