Ciao Luca buona serata allora sto provando e sono partito da un esempio
>"Luca D" ha scritto nel messaggio
>news:a73a9f3b-f59f-46cf...@googlegroups.com...
>On Tuesday, July 24, 2018 at 9:19:55 PM UTC+2, Ettore wrote:
Perchè OK la libreria esterna, ma se ha una singola classe con una singola funzione, se
non pensi di riutilizzarla in altri programmi, tanto vale che per il momento la lasci
nell'eseguibile principale
>Se puoi, definisci sempre il tipo di ritorno... certi default di
VB.NET, specie se usi il
>profili da "vecchio sviluppatore VB" di Visual Studio, sono un po' troppo disinvolti,
> >danno solo brutte abitudini; immagino che EarthL00 alla fine restituisca un altro
>Double?
>A parte questo, se dimentichi per un momento il discorso libreria esterna, e immagini di
>chiamare questa funzione come fosse parte del programma principale, qual'è il >tuo
>dubbio?! Perchè il messaggio di errore mi pare abbastanza chiaro:
>Hai definito una funzione che ha bisogno di un parametro IN INPUT, un numero a virgola
>mobile, quindi glielo devi passare ogni volta che la chiami
Luca D:
...................
Allora mi ci sono messo e ho guardato l'esempio a questo link (mi scuso per il link
completo e visibile)
https://www.dreamincode.net/forums/topic/121314-creating-a-dll-and-using-it-in-your-application/
A questo punto ho variato i valori e fatto delle prove .
Nella programmazione Libreria . passi .
Io ho Microsoft Visual Studio Enterprise 2017 v.15.7.5 -- + Framw.4.7.03062 .----------
1) Nuovo Progetto "WINDOWS DESKTOP" ==> Libreria di Classi(.NET FRAMEWORK)
2) Scegliere un nome decente e che rispecchi i canoni !
3) .Net Framework3.5 (ho scelto) so che i windows hanno le 2.0 installate di default,
facendo una ricerca su MSN .
4) Salva e si apre il progetto Es."" PDUNZDLL"" <=========== ATTENZIONE A QUESTO NOME !
5) Viene scritto questo Codice ""PUBLIC CLASS CLASS1 "" al posto di Class1, ci mettete la
vostra .. Io lo chiamata MyFunctions
e alla fine END CLASS
6) Scriverete tra questi codici la Funzione . => Public Function EarthL00(ByVal t2kJD As
Double)
Attenzione non potevo mettere t2kJDEMIL, perche' nel programma gia' presente ! quindi la
richiamo cambiando il nome.
7) Definire le variabili "Dim Result As Double ", nel mio caso
Result += 1.75347045673
Result += 0.03341656453 * Math.Cos(4.66925680415 + 6283.0758499914 * t2kJD)
ecc...ecc... qui ho circa 1000 linee di sommatoria .!
8) Alla fine [RICORDATE il Result nel Dim assegnandogli la variabile ?.. Bene ]
Result = String.Format("{0:f15}", (Result * 100000000))
Return Result
End Function
End Class
-----------------------------Compilo la DLL MENU' >>> Compilazione > "COMPILA SOLUZIONE" -
Vengono generati 3 file.
nel path => c:\Users\gobv\Documents\Visual Studio
2017\Projects\PDUNZDLL\PDUNZDLL\bin\Debug
PDUNZDLL.dll
PDUNZDLL.pdb
PDUNZDLL.xml
Ed il class nella dir : \Projects\PDUNZDLL\PDUNZDLL : Class1.vb , che era da rinominare
"MyFunctions" ma va bene uguale-
9) Prendete i 3 file e li mettete nel vostro programma
Nel mio caso
c:\Users\gobv\Documents\Visual Studio 2017\Projects\AstroCalcolo\AstroCalcolo\bin\Debug\
Dove c'e' il vostro programma eseguibile e altri file.
10) Aprite MS.VS e il vostro progetto
11) All'inizio del linguaggio di codice avete gli Imports.
Aggiungete => "Imports PDUNZDLL "
12) Andate nel vostro codice dove verra' richiesta la libreria.
Nel mio caso che e' l'esempio.
Avevo gia' un pulsante di calcolo Chiamato "CALCOLA" = [ btnCalcola ], dove assieme ho una
marea di calcoli che vengono eseguiti, parliamo di un programma di Astronomia, calcoliamo
i vari JD, le trasformazioni del giorno in decimale e via dicendo, fino alla posizione
Sole, Luna e altri pianeti .
Quando calcolo, devo calcolare tutto assieme non i varie fasi e, se sopargo linee di
codice, affanculo la memoria, la scalabilita',, .. il tempo di esecuzione, io ho un I7 a
3.9ghz,16gb ram, ,a su un procio I3 ? DAI NON PRENDIAMOCI PER IL CULO .
Comunque
""""
Public Sub btnCalcola_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnCalcola.Click
"""""
Qui calcola TUTTO.
Poi a una zona molto in avanti di codice........ ritornando alla libreria che mi serve.
ECCO LA PARTE DA METTERE NEL PROGRAMMA
------------------------------------------------------------
Dim Calcola As New PDUNZDLL.MyFunctions
Dim t2kJD As Double = Val(txtt2kJDEMIL.Text)
txtResult.Text = (Calcola.EarthL00(CDbl(txtt2kJDEMIL.Text)).ToString)
Calcola = e' uguale al nome della Sub Pulsante.
New PDUNZDLL = e' il nome della libreria salvata i famosi 3 file che avete assieme al
programma.
il Suffisso > " .MyFunctions " che e' il nome all'inizio della Dll Ricordate "Public Class
MyFunctions"
OK
13) La variabile creata t2kJD, che richiama la vera non menzionabile, perche' gia'
dichiarata, e il cui nome e' nella libreria se notate.
Result += 0.03341656453 * Math.Cos(4.66925680415 + 6283.0758499914 * t2kJD) <============
14) txtResult , perche' e menzionato come nome da associare a quello reale, ma il punto e'
"(Calcola.EarthL00 ....
Perché menzionato nella variabile associata e che richiama la libreria .
15) txtt2kJDEMIL.Text , nome dato alla Textbox a cui devo ritornare il valore calcolato
dalla libreria, e riportato in auge al programma!
16) Avevo creato un pulsante apposito e una textbox1, che ho eliminato perche' ho capito
provando come richiedere i valori e come reinserirli, guardando l'esempio in link sopra.
ATTENZIONE.. RINGRAZIO A QUANTI RISPONDO E CHE QUI SU QUESTO NEWSGROUP RISPONDO SERIAMENTE
........
A PARTE MOLTI CHE FORSE NON COMPRENDONO COMPLETAMENTE IL PROBLEMA CHE SI VORREBBE UNA
SOLUZIONE "RAPIDA "
ED ALTRI INVECE CERCANO DI DARTI UNA MANO REALE.
MA MI ACCORDO CHE QUI SI SIA UNA GRANDE MOLE DI GENTE STITICA NEL DARE CONSIGLI O DARE
ESEMPI.
VI VOGLIO RICORDARE CHE SI' AVETE STUDIATO, MA NON SIETE I GESU' CRISTO DELLA
PROGRAMMAZIONE, SIETE STRESSATI E SPESSO VI GIRA IL CAZZO, SAPENDO CHE DARE DEI CONSIGLI A
VOLTE, VI SCAZZA PERCHE' VOI CI PERDETE TEMPO E ROTTURE DI CAZZO .
E NON VOLTE CHE GLI ALTRI TROVINO SUBITO LA RISPOSTA O LA SOLUZIONE, QUESTO E' ESSERE
MERDE ! MA VE LO DICO CON IL CUORE.
A 58 ANNI DI GENTE NE HO AIUTATA TANTA, MA DI MERDE NON MI FINISCO MAI DI STUPIRE DI
QUANTE CE NE SIANO !
MA AIUTARSI NON E' UN PECCATO SPESSO QUANDO POI VOI AVETE PROBLEMI, RICORDATE CHE GLI
ALTRI FARANNO ALTRETTANTO !
SPERO DI AVERE ESAURITO IL POST E DATO UNA MANO IO A CHI INVECE NE AVRA' BISOGNO
REALE E NON DA STITICO !!!!!!!!!
E 15 GIORNI CHE MI ERO ROTTO IL CAZZO A CERCARE UNA SOLUZIONE E SPERARE QUALCUNO CAPISCA
COSA MI SERVE .
QUI I PASSI CHE OCCORRONO E SPERO PER GLI ALTRI !
NEL FRATTEMPO TESTO, TESTO E SPERO DARE AIUTI ANCHE AGLI ALTRI .
Grazie "Luca D"
Al momento sembra funzionare mo' devo capire di cambiare dei nomi !
E un po' di merda la devo mangiare anche io . no ?