sabato 7 luglio 2012

Generare numeri casuali senza ripetizioni

L'esempio mostra come generare una serie di numeri x casuali senza ripetizioni ponendo un limite numerico y.
Ossia in questo caso prendo una serie di 10 cifre tra i numeri 1 e 50 senza che ci sia una ripetizione di numeri all'interno della serie.
public class test {
    public static void main(String[] args) {
        for (int intNum : genNumber()) {
            System.out.print(""+intNum+" ");
        }
    }
    
    private static List genNumber(){
        Random rng = new Random();
        List generated = new ArrayList(); 
        int x = 10;    //numbers to get
        int y = 50;    //max number
        for (int i = 0; i < x; i++) 
        { 
            while(true) 
            { 
                Integer next = rng.nextInt(y) + 1; 
                if (!generated.contains(next)) 
                { 
                    generated.add(next); 
                    break; 
                } 
            } 
        } 
        return generated;
    }
}
Risultato: 26 21 15 29 36 18 49 9 8 38

martedì 3 luglio 2012

Replace di una stringa in un file di testo

Ecco un semplice esempio in vb6 di un "replace" di una stringa in un file txt; leggo il contento del file e sostituisco una virgola con un punto.
Sub ReplaceExample()
    Dim strLocal, strChange, pathFile As String
    strLocal = ","
    strChange = "."
    pathFile = "c:\example.txt"
    Dim fso As New FileSystemObject, txtfile, _
    fil1 As File, ts As TextStream
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(pathFile) = True Then
        Set fil1 = fso.GetFile(pathFile)
    Else
        MsgBox "Percorso file inesistente!"
        Exit Sub
    End If
    strFile = pathFile & "1"
    Open strFile For Output As #1
    ' Legge il contenuto del file e sostituisce 
    ' i separatori decimali.
    Set ts = fil1.OpenAsTextStream(ForReading)
    Do While ts.AtEndOfStream <> True
        Print #1, Replace(ts.ReadAll, strLocal, strChange)
    Loop
    ts.Close
    Close #1
End Sub

lunedì 2 luglio 2012

Test di connessione al database

Questo esempio in vb6 mostra come eseguire un semplice test di connessione ad un db MS Access o MS SqlServer.
Se il test risulterà positivo la funzione tornerà "true", altrimenti "false".
In caso di errore verrà prospettato un messaggio a video.
Function testConnectionDb()
    On Error GoTo errorDB
    DoEvents
    Dim msgError, strConDbAccess As String

    'connessione a db ms access
    strConDbAccess = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" _
     & "c:\db.mdb"
    
    'connessione a db ms sqlserver
    'strConDbSqlServer = "Driver={SQL Server};Server=" & dbServerSqlServer _
    '& ";Database=" & dbNameDbSqlServer & ";Uid=" & dbIdDbSqlServer _
    & ";Pwd=" & dbPwdDbSqlServer & ";"

    Set Conn = New ADODB.Connection
    With Conn
        .CommandTimeout = 20
        .CursorLocation = adUseClient
        .Open strConDbAccess
        '.Open strConDbSqlServer
    End With
    If Conn.State = 1 Then
        Conn.Close
        testConnectionDb = True
    Else
        testConnectionDb = False
    End If
    Exit Function
errorDB:
        msgError = "Modulo Avvio DataBase" & Chr(13) & _
          "Numero Errore: " & Err.Number & " Descrizione: " & Err.Description
        MsgBox msgerrore, vbCritical + vbOKOnly, _
        "Errore di Connessione al DataBase!"
End Function

domenica 1 luglio 2012

Uso del timer in una Activity

Con questo codice è possibile far partire un timer in una Activity di un app android.
Nel "onCreate", ossia quando parte l'Activity, viene richiamato il timer che verrà ripetuto ogni 100 millisecondi;
nel "runTimer" viene implementata la logica che vogliamo far eseguire dal timer eventualmente bloccandolo con una condizione "if(condition to break)";
in fase di uscita dall'Activity nel "onDestroy" eliminiamo il timer se ancora attivo.
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {
    private Timer myTimer;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myTimer = new Timer();
        myTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                timerMethod();
            }
            }, 0, 100);
            //delay: amount of time in milliseconds
            //before first execution
            //period: amount of time in milliseconds 
            //between subsequent executions
    }

    private void timerMethod()
    {
        this.runOnUiThread(runTimer);
    }
    
    private Runnable runTimer = new Runnable() {
        public void run() {
        /*  
            do something, write instructions
            ...
            if(condition to break){
                myTimer.cancel();
            }
        */
        }
    };
    
    protected void onDestroy() {
        if(myTimer!=null)
            myTimer.cancel(); 
        super.onDestroy();
    }
}