Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Heyjoe
    Registrato dal
    Dec 2001
    Messaggi
    95

    [VB6]evitare ripetizioni

    mi sto ubriacando ...

    Ho una cartella dove salvo i file (ese1.dat, ese2.dat, ese3.dat, etc fino a 50)
    Questi file vengono continuamente cancellati oppure aggiornati dall'utente.
    Il problema mi nasce quando devo far registrare un nuovo file "ese(x).dat" dall'utente.
    Ho visto un esempio che usa la proprietà Tag del form, ma i numeri non mi tornano, cioè se il file è esem5.bat, a volte mi ritrovo con il suo tag 3 per esempio.

    Sistemi alternativi? in pratica dovrei solo riuscire a leggere il numero (ese*numero*.dat) di tutti i file nella cartella,non considerare quelli già occupati, e salvare con un numero compreso tra 1 e 50 diverso da quelli occupati.

    E' un casino?

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

    Moderazione

    Ho paura che tu debba mostrare un po' di codice o spiegare meglio ciò che fai per ravvisare una soluzione alternativa o correggere quella attuale.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di Heyjoe
    Registrato dal
    Dec 2001
    Messaggi
    95
    Questo è il codice del modulo

    codice:
    Public n As Integer
    Public scadenza As String
    Public allarme As String
    Public nic As NOTIFYICONDATA ' per icona
    
    
    
    Public Sub Main()
    Form1.tray ' lancia la proc Tray per fissare Headle solo di FORM1
    
    For numero = 0 To 100 ' apre tutte le note max 100
        'If Not (apri) Then Exit For
        apri (numero)
    Next numero
    n = n - 1
    End Sub
    Public Function apri(numero As Integer) As Boolean
    Dim frm As New Form1
    On Error GoTo erro
    nome = App.Path & "\note\note" & numero & ".dat"
    Open nome For Input As #1
    
    ' ********************* POSIZIONE ************************
        
        Line Input #1, stringa
        frm.Top = stringa
        Line Input #1, stringa
        frm.Left = stringa
        Line Input #1, stringa
        frm.Height = stringa
        Line Input #1, stringa
        frm.Width = stringa
        frm.Tag = n
        frm.Visible = True
        
        
    ' ***************** INIZIO TESTO ************************
        Line Input #1, wave ' wave
        Line Input #1, stringa ' data
        frm.Label2.Caption = stringa
        data_scad = stringa
        
        Line Input #1, stringa ' prima riga
        frm.Text1.Text = stringa
        Do While Not EOF(1)
            Line Input #1, stringa
            frm.Text1.Text = frm.Text1.Text & Chr(13) & Chr(10) & stringa
        Loop
    Close #1
    n = n + 1
        
    ' ****************** CONTROLLO SCADENZA *******************
        If Len(data_scad) = 10 Then
            If Date >= DateValue(data_scad) Then
                frm.BackColor = &HFFFF&
                frm.Text1.ForeColor = &HFF&
                frm.Text1.BackColor = &HFFFF&
                frm.Label2.BackColor = &HFFFF&
                
                
                MsgBox "Nota " & numero & " scaduta!", vbInformation
                
            End If
        End If
    
    apri = True
    Exit Function
    
    erro:
    Close #1
    apri = False
    
    End Function
    E questo è il codice nel form che crea un nuovo form

    codice:
    Private Sub save_Click()
    
    If Me.Tag = "" Then 
        n = n + 1
        Me.Tag = n
    End If
    
    nome = App.Path & "\note\note" & Me.Tag & ".dat"
    
    Open nome For Output As #1
    Print #1, Me.Top
    Print #1, Me.Left
    Print #1, Me.Height
    Print #1, Me.Width
    Print #1, Me.Label2.Caption
    Print #1, Text1.Text
    Close #1
    End Sub

  4. #4
    Utente di HTML.it L'avatar di Heyjoe
    Registrato dal
    Dec 2001
    Messaggi
    95
    Nel codice che ho esposto, il "Me.Tag" dovrebbe essere diverso dalla numerazione del file , cioè se nella cartella esiste già nota1.dat , nota2.dat, il "Me.Tag" non dev'essere 1 oppure 2.

  5. #5
    Utente di HTML.it L'avatar di Heyjoe
    Registrato dal
    Dec 2001
    Messaggi
    95
    A prescindere da questo codice tratto da un file scaricato,
    Vorrei, con una mia applicazione, salvare dei file nel formato
    notaX.dat, dove la X è un numero tra 1 e 100.
    Poi, sempre dalla solita applicazione, vorrei aprire la cartella, aprire tutti i file notaX.dat,e crearne dei nuovi, però facendo che quelli nuovi non abbiano una numerazione già occupata da un file in cartella.
    Con il codice che ho riportato, a volte il nuovo form usa un Tag/numero già occupato, perciò mi sovrascrive il testo su un file già esistente senza crearne uno nuovo, perchè il valore di Me.Tag è uguale ad un numero dei file già esistenti.

    Secondo me, nell'esempio, l'inghippo sta nel valore di n=n-1 nel modulo ...

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.