Far comunicare VB e DB - Versione stampabile +- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi) +-- Forum: Programmazione (https://www.making-videogames.net/giochi/Forum-Programmazione) +--- Forum: Visual Basic, Visual Basic.Net (https://www.making-videogames.net/giochi/Forum-Visual-Basic-Visual-Basic-Net) +--- Discussione: Far comunicare VB e DB (/thread-Far-comunicare-VB-e-DB) Pagine:
1
2
|
Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Ciao ragazzi ho un problemone. HO un bel progetto in corso in cui era previsto che Dark Basic Pro e Visual Basic 2005 Express Edition comunichino tramite file... Qual'é il problema? Dark Basic scrive su file: - Integer - Byte - Float - Word - String etc etc Visual Basic scrive invece: - Byte - String E dunque siccome necessariamente io devo scrivere su file numero superiori a 255 (dimensione di un byte) sono rimasto bloccato. Come faccio? RE: Far comunicare VB e DB - x4ndr3a - 08-01-2011 non ce solo float e word. Con byte si comunica quando scrivi la memoria di un processo però sono cose complesse e integer quando si riferisce ad un valore numerico (scusate il doppio post) prova ad usare un integer RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 E' questo il problema che non posso scrivere un integer ma solo byte e stringhe infatti i comandi sono solo questi: My.Computer.FileSystem.WriteAllBytes("Directory", byte, True) My.Computer.FileSystem.WriteAllText("Directory", Stringa, True) Falso se si deve sovrascrivere ma in questo caso dovrei fare tutti in un file. Magari qualche esempio potrebbe essere d'aiuto :\ RE: Far comunicare VB e DB - NecroRayder - 08-01-2011 (08-01-2011, 12:40 PM)Jonathan Archer Ha scritto: E' questo il problema che non posso scrivere un integer ma solo byte e stringhe infatti i comandi sono solo questi: scusa ho visto il post però ancora non mi è chiaro quello che vuoi fare...il tuo intento quale sarebbe?? puoi specificare meglio??? RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Certamente. Volevo far comunicare VB e DB tramite file. Per esempio: Voglio trasmettere un valore di 1000 da VB a DB Tuttavia com VB il massimo che si può scrivere in file é un Byte ossia 255. Lo stesso vale al contrario se DB deve dare per esempio un valore Float a VB ma non saprei come fare RE: Far comunicare VB e DB - NecroRayder - 08-01-2011 (08-01-2011, 01:28 PM)Jonathan Archer Ha scritto: Certamente. Volevo far comunicare VB e DB tramite file. Per esempio: se ho cpt...vorresti fare quello k voglio fare anche io e cioè metti per esempio che nel gioco il giocatore sale al lv 17...allora nel programma di vb dovresti essere in grado di vedere il tuo livello diciamo...sbaglio??? se è sbagliato ti chiedo scusa xD RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 Ti sbagli, è possibilissimo. Ricorda che con più byte è possibile salvare qualsiasi tipo di cosa riutilizzando la rappresentazione dei valori nella memoria (esempio: un intero è formato da 4 byte, basta ricalcolarci e scriverli). Però ti consiglio di evitare questo tipo di cose con DBP perchè diciamo che è un pò complesso per quanto riguarda la scrittura/lettura e quindi ti consiglio di fare tutto tramite stringhe. Eccoti il modulo che utilizzo io per DarkSv3Engine per leggere un file di testo (o qualsiasi file) riga per riga. Il separatore è "chr(13)+chr(10)" Codice: Rem ***** Included Source File ***** Adesso per leggere il file richiami semplicemente la funzione LeggiFile$(nome del file). Il nome è relativo alla directory del gioco ovviamente. Codice: dati_giocatore$ = LeggiFile$("player1.def") puoi leggere i vari dati utilizzando la funzione KeyValue$ il primo parametro è il testo da cui leggere la variabile, il secondo è il nome della variabile e il terzo è il valore di default nel caso la variabile non sia stata descritta nel file. Stai attento però che questa funzione è pignola: non ammette spazi prima e dopo del "=" Codice: // dati_giocatore$ è la variabile che contiene il testo letto Per quanto riguarda il VB.net 2005 è semplice: Supponendo di avere queste variabili che si modificano nell'editor: Codice: dim nome_modello as string = "uomo.x" Per il salvataggio farò semplicemente: Codice: dim scrittore As StreamWriter = New StreamWriter("player1.txt") RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Non credevo che l'argomento fosse cosi' complicato... ma c'è un problemino ^^ Io non sono mai andato daccordo con i comandi di funzione e tantomeno sono riuscito a combinarlo col comando Include# quindi dovresti spiegarmi prima quelli xD RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 E' semplice Non preoccuparti per include#, l'editor fà tutto Aggiungi un nuovo file al progetto (cliccando con il tasto destro sull'elemento Project nel Solution Explorer e fai "Add a new item". Ti farà salvare un file, salvalo nella cartellla del codice sorgente del programma e chiamalo "GestioneFile.dba" e poi salva. Adesso vedrai che avrai 2 file: uno scritto in grassetto che sarebbe il file di avvio del programma detto "Main File" e l'altro, GestioneFile.dba. Facendo così, il codice contenuto in GestioneFile.dba verrà aggiunto alla fine del Main File durante la fase di compilazione. Questo ti permette di tenere il codice sorgente pulito e non incasinato. Inoltre puoi separare codici specifici per file così da orientarti anche meglio. Non puoi dichiarare variabili in cima ai file che non sono il Main File, quindi gli altri possono contenere solamente funzioni e routine Copia nel file "GestioneFile.dba" (doppio click sul'elemento nel solution explorer) il codice di prima. Adesso puoi usare quelle funzioni nel Main File (e non solo ). Una funzione non è altro che un normale comando, si differenzia tra i comandi base per l'inserimento dei parametri e per il nome: non può avere spazi nel nome e i parametri devono essere messi tra le parentesi tonde. Si differenziano dalle routine (che in dark basic pro sarebbero i blocchi di codice richiamati tramite il comando gosub) per la possibiltà di avere un valore di ritorno che può essere assegnato ad una variabile ad esempio. Per scriverle è semplice, si utilizza la semplice struttura: Codice: function nome_funzione<$ se stringa>(parametri) Un'esempio semplice di funzione: wrapangle a 180° [spoiler] La funzione nativa di Dark Basic "wrapangle" ci permette di riportare un valore numerico in un angolo. Esempio: Codice: a# = wrapangle(725) [/spoiler] Codice: function wrapangle180(angolo#) Codice: #ax = 869 Codice: function muovi_oggetto(index_oggetto,velz,velx) Ecco una piccola spiegazione sulle funzioni RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Dunque ricapitoliamo: Function NomeFunzione(Parametri) // Codice Endfunction (Parametro che restituisce opzionale) Su Funzione possiamo inserire parametri che verranno riportati e possibilmente utilizzati nella funzione stessa Quando la funzione termina si può far restituire un valore che é stato precedentemente modificato in modo da poterlo usare nel Main Project. Giusto? RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 Esatto Le varie funzioni che sopra ti ho scritto servono per cercare e tagliare parti di testo da una stringa e ritornare i valori trovati RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Bene... Ora dovrei riunire un pò tutto quello che ho capito per metterlo in pratica xD So che sono uno scocciatore ma se ti chiedessi di postarmi un esempio di cooperazione tra questi due programmi cosi' da poter analizzare un codice che sicuramente é ben montato ti seccheresti? xD RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 Posso farti solamente il progetto per Dark Basic perchè ho VB.net 2010, e con il 2005 non riusciresti ad aprire il progetto.. RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Ti sarei lo stesso grato ^^ Intanto sto provando le funzioni prendendo esempio da te e finalmente ne ho capito il funzionamento *o* PS: Io ho VB2010 anche però quando faccio setup non succede niente ._. RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 Ecco qui l'esempio (allegato) Non fà altro che caricare dei dati dai 3 file: test1.txt test2.txt test3.txt Se vedi nel codice sorgente ho scritto un pò di analisi (a scuola mi hanno fatto prendere il vizio di documentare il codice quando devo rilasciarlo e quindi commento e scrivo). Se apri il file test3.txt puoi vedere che ci sono 2 parametri in più: startx e starty. Prova ad inserirli anche dentro test1.txt e test2.txt e poi avvia il programma, vedrai che li carica RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Ok parto analizzando tutto! Nel frattempo avresti qualche consiglio per far partire VB2010? Ho XP SP3 ma non succede un ben niente, l'applicazione si autokilla (lo vedo sul task) [SPOILER]E' incredibile come la Microsoft sia in grado di rilasciare un programma che sia buggato già dall'installazione e leggo online che non sono l'unico -.-[/SPOILER] Ho già quelche dubbio su dei comandi che non ho mai usato (e a dire il vero non ho capito bene a che servono). Te li metto in grassetto: function LeggiFile$(filename$) fileNum# = 1 result$ = "" // Apre il file open to read fileNum#, filename$ // Se è riuscito ad aprirlo... if file open(fileNum#)=1 // ... leggilo fino alla fine while file end(fileNum#)=0 newline$ = "" read string fileNum#,newline$ // Se la riga letta non è una riga di commento o è una riga <= 2 caratteri if left$(newline$,2) <> "//" and len(newline$) > 2 result$ = result$ + newline$ + chr$(13)+chr$(10) endif endwhile endif // Chiude il file close file fileNum# endfunction result$ nome$ = KeyValue$( contenuto_file$, "nome", "[valore non inserito]" ) modello$ = KeyValue$( contenuto_file$, "modello", "[valore non inserito]" ) attacco# = val( KeyValue$( contenuto_file$, "attacco", "-1" ) ) difesa# = val( KeyValue$( contenuto_file$, "difesa", "-1" ) ) alto = val( KeyValue$( contenuto_file$, "alto", "1" ) ) startx# = val( KeyValue$( contenuto_file$, "startx", "0" ) ) starty# = val( KeyValue$( contenuto_file$, "starty", "0" ) ) RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 Allora nella maggior parte dei casi, quando sono comandi nativi (quindi in blu) basta spostarti sopra con il cursore e premere F1 per aprire la guida, dovrebbe aprirti la documentazione su quei comandi left$(stringa$,lunghezza) Come da nome, prende X (dove X è uguale a lunghezza) caratteri da stringa$ partendo da sinistra val(stringa$) Converte la stringa in un numero KeyValue$ E' una funzione non nativa ma che è stata definita dentro GestioneFile.dba, prova a guardare Ad ogni modo prendere come parametri un testo (non vuoto e ben formattato altrimenti crasha l'app), il nome di un parametro, un valore di default il testo deve essere formattato con il seguente schema: Codice: nome_valore=valore Per VS2010: che OS hai? RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 Allora nella maggior parte dei casi, quando sono comandi nativi (quindi in blu) basta spostarti sopra con il cursore e premere F1 per aprire la guida, dovrebbe aprirti la documentazione su quei comandi left$(stringa$,lunghezza) Come da nome, prende X (dove X è uguale a lunghezza) caratteri da stringa$ partendo da sinistra val(stringa$) Converte la stringa in un numero KeyValue$ E' una funzione non nativa ma che è stata definita dentro GestioneFile.dba, prova a guardare Ad ogni modo prendere come parametri un testo (non vuoto e ben formattato altrimenti crasha l'app), il nome di un parametro, un valore di default il testo deve essere formattato con il seguente schema: Codice: nome_valore=valore Per VS2010: che OS hai? RE: Far comunicare VB e DB - x4ndr3a - 08-01-2011 (08-01-2011, 05:15 PM)Sweet Vengeance Ha scritto: Ecco qui l'esempio (allegato) Non fà altro che caricare dei dati dai 3 file: test1.txt Azz... a scuola vi fanno studiare il VisualBasic? RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 No Però sono al 4° anno di un ITIS e quindi faccio programmazione. Al momento faccio Java e C++ Tutti gli altri linguaggio (Visual Basic 6, VB.Net e C#, MySQL, Ruby[anche se ormai non lo ricordo proprio più]) li ho fatti da solo RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 No Però sono al 4° anno di un ITIS e quindi faccio programmazione. Al momento faccio Java e C++ Tutti gli altri linguaggio (Visual Basic 6, VB.Net e C#, MySQL, Ruby[anche se ormai non lo ricordo proprio più]) li ho fatti da solo RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Left$, Right$ e Val sono comandi utilissimi! L'ho appena provato e funge Lower$ invece a che serve ^^ Ho Windows XP SP3 con Net Framework 3.5 appena messo RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 Vedi se questo può esserti utile: http://blogs.msdn.com/b/psiman/archive/2010/03/02/installing-visual-studio-2010-rc1-on-xp-sp3.aspx Vedi se questo può esserti utile: http://blogs.msdn.com/b/psiman/archive/2010/03/02/installing-visual-studio-2010-rc1-on-xp-sp3.aspx RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Niente da fare... non da segni di vita. Ma non andiamo Off Topic, d'altronde come questa lezione pomeridiana che mi hai fatto penso di aver risolto i miei problemi, per ora xD D'altronde VB2005 va più che bene per quello che devo fare ^^ Vediamo se incontro ancora problemi con qualcosa. Ti faccio sapere RE: Far comunicare VB e DB - Sweet Vengeance - 08-01-2011 A disposizione RE: Far comunicare VB e DB - Jonathan Archer - 08-01-2011 Dimenticavo... ovviamente grazie 1000! Mi hai risparmiato non solo un esaurimento nervoso ma anche uno sconfortante abbandono del progetto RE: Far comunicare VB e DB - NecroRayder - 08-01-2011 mi dispiace di non esserti stato d'aiuto jonathan però ringrazio tutti e 2 perchè grazie al vostro aiuto anche il mio proggetto sta avanzando RE: Far comunicare VB e DB - Jonathan Archer - 09-01-2011 Non ti preoccupare Siamo qui per imparare Come potrei fare in modo che un ListBox possa mostrare come opzioni i file presente in una cartella specifica? Devo usare necessariamente il database? RE: Far comunicare VB e DB - NecroRayder - 09-01-2011 (09-01-2011, 10:00 AM)Jonathan Archer Ha scritto: Non ti preoccupare Siamo qui per imparare Ecco qui un esempio di quello che vuoi fare xD però non usa una listbox bensì una filelistbox...come puoi vedere,comunque e molto semplice xD http://hotfile.com/dl/95445061/10096f0/Esempio_FileListBox.rar.html PS.spero di esserti stato d'aiuto RE: Far comunicare VB e DB - Jonathan Archer - 09-01-2011 Certo che mi sei stato utile! Anche se il file é di VB6 e quindi me l'ha dovuto convertire Ma funge alla perfezione! A che servono i comandi: Option Strict Off Option Explicit On ? |