Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VB.NET - Creare DLL

129 views
Skip to first unread message

Ettore

unread,
Jul 24, 2018, 3:19:55 PM7/24/18
to
Buonasera a tutti . (PROVO a CHIEDERE)
Sto facendo un programma di AstroCalcolo .
Devo calcolare il valore di una serie di lunghi dati (Teoria VSOP87) .
Quindi per evitare, ho pensato che mettere i dati in una libreria esterna, che ho chiamato
"Earthvsop87_lbr.dll"
Dal programma vendono calcolati i dati ---------
E " t2kJDEMIL "

Quindi inserendo in intestazione nel programma ho inserito
Imports Earthvsop87_lbr
-------------------------------------------------------
Mentre nella DLL
-------------------------------------------------------
Public Class Earthvsop87
Public Function EarthL00(ByVal t2kJDEMIL As Double)
Dim L0 As Double
L0 += 1.75347045673
L0 += 0.03341656453 * Math.Cos(4.66925680415 + 6283.0758499914 * t2kJDEMIL)
L0 += 0.00034894275 * Math.Cos(4.62610242189 + 12566.1516999828 * t2kJDEMIL)
....ecc..........
EarthL00 = (L0 * 100000000)
Return EarthL00

----------------------------------------
Quindi nel programma devo andare a prendere il valore calcolato
Ma non riesco a capire cosa mettere ... mi sono bloccato nel ragionamento
Cioe' Dal programma il valore " t2kJDEMIL " e' calcolato !
Richiedo il risultato di Return EarthL00 (ideale 14 cifre dopo virgola , come si fa ?)
Pensavo a String.Format("{0:f14}", EarthL00) MA COME ?

La libreria chiamata calcola il valore e come lo richiamo nella textbox ??????????????????
Non capisco come prende il valore "t2kJDEMIL" la libreria.
Nel programma. ..................
" Dim Add As New Earthvsop87 "
??
??
txtEarthL00.Text = Add.EarthL00

Su EarthL00 , appare righetta rossa. Dicendo che l'argomento non e' stato specificato per
il parametro "t2kJDEMIL"

Suggerimenti o aiuti da chi lo fa per lavoro e passione
GRAZIE

Luca D

unread,
Jul 24, 2018, 6:58:57 PM7/24/18
to
On Tuesday, July 24, 2018 at 9:19:55 PM UTC+2, Ettore wrote:
> Buonasera a tutti . (PROVO a CHIEDERE)
> Sto facendo un programma di AstroCalcolo .
> Devo calcolare il valore di una serie di lunghi dati (Teoria VSOP87) .
> Quindi per evitare, ho pensato che mettere i dati in una libreria esterna

"evitare" cosa?
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

> Public Function EarthL00(ByVal t2kJDEMIL As Double)

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:

> Non capisco come prende il valore "t2kJDEMIL" la libreria.
> Nel programma. ..................
> txtEarthL00.Text = Add.EarthL00
> Su EarthL00 , appare righetta rossa. Dicendo che l'argomento non e' stato
> specificato per il parametro "t2kJDEMIL"

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

Dim temp As Double = Add.EarthL00(<il tuo numero di partenza>)
txtEarthL00.Text = temp.ToString("F14")

Nota che, casomai avessi impostato da un'altra parte il valore in una variabile che si chiama "t2kJDEMIL", ovvero come il parametro, è del tutto ininfluente, viene ignorata; per come ha definito l'intestazione della tua funzione, lo devi sempre passare esplicitamente


A quel punto, che tutto questo sia dentro o fuori la tua DLL esterna, non cambia nulla, il funzionamento è lo stesso.

Ettore

unread,
Jul 25, 2018, 10:27:31 AM7/25/18
to
Grazie Luca


>"Luca D" ha scritto nel messaggio
>news:a73a9f3b-f59f-46cf...@googlegroups.com...
>"evitare" cosa?
>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
SONO BEN 38000 LINEE DI CODICE .......... NO E' CERTO UN PROGRAMMA CHE MOLTI DEFINIREBBERO
"CERTA .. SCALABILITA" , E POI NON SAREBBE MEGLIO METTERLE ESTERNE ?

>> Public Function EarthL00(ByVal t2kJDEMIL As Double)
QUESTO E' NEL DLL , ma come faccio a fare in modo che venga preso dal programma ?
Esempi ne ho trovato 2
https://www.dreamincode.net/forums/topic/121314-creating-a-dll-and-using-it-in-your-application/
https://www.youtube.com/watch?v=lYqIATIysGw
MA ALLA FINE...... NON RIESCO A PORRE QUELLO CHE MI NECESSITA.. FACCIO FATICA.

>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?
SI' IL RISULTATO E' SENZ'ALTRO UN DOUBLE .
""Dim L1 As Double
"" Dim EarthL11 As Double
"" L1 += 6283.0758499914
"" L1 += 0.00206058863 * Math.Cos(2.67823455808 + 6283.0758499914 * t2kJDEMIL)
......
EarthL00 = (L0 * 100000000)
Return EarthL00
""""""""""""""""""""""""""""PER DIRE..............................

>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:

>> Non capisco come prende il valore "t2kJDEMIL" la libreria.
>> Nel programma. ..................
>> txtEarthL00.Text = Add.EarthL00
>> Su EarthL00 , appare righetta rossa. Dicendo che l'argomento non e' stato
>> specificato per il parametro "t2kJDEMIL"

>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

>Dim temp As Double = Add.EarthL00(<il tuo numero di partenza>)
>txtEarthL00.Text = temp.ToString("F14")
CIOE? ... Definisco una variabile temp a Double, e il resto richiamo il valore della dll
?, prendendo il risultato in Textbox ? ........ come prende invece t2kJDEMIL ?
VISTO CHE E' CALCOLATO NEL PROGRAMMA ........ DOVREI PASSARLO ALLA LIBRERIA.


>Nota che, casomai avessi impostato da un'altra parte il valore in una variabile che si
>chiama "t2kJDEMIL", ovvero come il parametro, è del tutto ininfluente, viene >ignorata;
>per come ha definito l'intestazione della tua funzione, lo devi sempre passare
>esplicitamente
MA VIENE PRESO IL VALORE CALCOLATO IN ULTIMO , DEFINENDO UNA VARIABILE APPOSITA.

>A quel punto, che tutto questo sia dentro o fuori la tua DLL esterna, non cambia nulla,
>il funzionamento è lo stesso.

Sarebbe che se potessi avere i dati esterni, alleggerisco il programma
Sono cose che in internet sono specificate, ma male si adeguano al diverso problema anche
se il passo e' simile .
Il mio ideale sarebbe poter avere su librerie esterne i valori di 38000 righe di codice
esterne, oltre la tranquillita' di ridurre errori e carico memoria !!!!!!!
Hai alternative e' sopratutto un esempio che possa paragonare meglio ?
Dopotutto, e' una sommatoria "E" , calcolo il valore T > t2kJDEMIL , lo devo passare alla
dll, che calcola il valore finale per passarlo al programma che lo visualizza in una
textbox.
Facile a dirsi ma vedo difficile a farsi .

Cordiale Luca.
(Luciano)


Ettore

unread,
Jul 25, 2018, 1:48:08 PM7/25/18
to
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 ?





Ettore

unread,
Jul 25, 2018, 1:56:05 PM7/25/18
to

Dimenticavo che nella Libreria Dll poi compilata
inizialmente e'
Public Function EarthL00(ByVal t2kJD As Double)
Dim Result As Double
Result += 1.75347045673


Ricordando il messaggio precedente mancante.

"""
Result += 1.75347045673
Result += 0.03341656453 * Math.Cos(4.66925680415 + 6283.0758499914 * t2kJD)
ecc...ecc... qui ho circa 1000 linee di sommatoria .!

Result = String.Format("{0:f15}", (Result * 100000000))
Return Result

End Function
End Class
""""""""""""


e che EarthL00 e' menzionata quando si richiama da programma
"""
txtResult.Text = (Calcola.EarthL00(CDbl(txtt2kJDEMIL.Text)).ToString)
""
CORDIALI A TUTTI

Luca D

unread,
Jul 25, 2018, 5:56:34 PM7/25/18
to
On Wednesday, July 25, 2018 at 7:48:08 PM UTC+2, Ettore wrote:

> Grazie "Luca D"

Ehm... prego

Però posso dire? non e' la prima volta che se non ti arriva la risposta nei tempi e modi che ritieni ti siano "dovuti", te ne esci con qualche pistolotto tipo questo che francamente mi fa scappare la voglia di rispondere la volta dopo.

A parte questo, c'è talmente tanto bordello nel post che hai appena fatto che non so come faccia a stare insieme questo programma da 38000 righe di codice senza chiamare un esorcista... e intendo cose tipo

>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.

il parametro lo puoi chiamare come vuoi, anche se esiste una variabile altrove con lo stesso nome, basta che PASSI IL VALORE alla funzione quando la chiami

> Result += 0.03341656453 * Math.Cos(4.66925680415 + 6283.0758499914 * t2kJD)
> ecc...ecc... qui ho circa 1000 linee di sommatoria .!

Per curiosità, sono 1000 righe tutte con lo stesso tipo di operazione?
cioè
X * Math.Cos(Y + Z * t2kJD)

Perchè nel caso, se a cambiare siono solo i tre valori numerici, lo puoi ridurre ad un ciclo for di 3(tre) righe, se tieni la tabella coi coefficenti memorizzata a parte

> Result = String.Format("{0:f15}", (Result * 100000000))

Se Result e' definito Double, non ha senso convertirlo in stringa per poi farselo immediatamente ri-convertire (di nascosto) in Double dal framework, che è quello che succede con l'istruzione qui sopra

> Dim t2kJD As Double = Val(txtt2kJDEMIL.Text)
> txtResult.Text = (Calcola.EarthL00(CDbl(txtt2kJDEMIL.Text)).ToString)

Vedi sopra... prendi una stringa da un textbox, la converti in double, poi chiami la funzione che vuole un double in input ma invece che dargli la variabile appena convertita, la ri-traformi di nuovo dal textbox (bonus artistico per aver usato Val e CDbl nello spazio di due righe per fare la stessa cosa, scegline una) e dulcis in fundo applichi .ToString al risultato che quindi (per come hai applicato Format() al punto prima) in totale viene convertito Double->String->Double->String

Ecc... ecc... insomma, quando dicevo di lasciare un attimo da parte il discorso DLL esterna, e' perchè mi pare ci sia parecchia confusione gia' nelle basi (vedi anche la "soluzione" a colpi di 28 IF dell'altro post), e non mi pareva il caso di aggiungere un altro livello di casino.

Che nessuno nasce imparato e' vero, pero' prima di permetterti di mandare a fanculo a destra e a manca chi non ti risponde, magari considera che è già una impresa capire le domande che fai, e che probabilmente il tempo che hai speso per farci la morale lo impiegheresti meglio a leggere un libro introduttivo, e intendo proprio *introduttivo*, al linguaggio

Ettore

unread,
Jul 26, 2018, 1:52:43 PM7/26/18
to
Grazie caro .
>"Luca D" ha scritto nel messaggio
>news:f82087b2-572e-445e...@googlegroups.com...
>On Wednesday, July 25, 2018 at 7:48:08 PM UTC+2, Ettore wrote:
> Grazie "Luca D"
>Ehm... prego
>Però posso dire? non e' la prima volta che se non ti arriva la risposta nei tempi e modi
>che ritieni ti siano "dovuti", te ne esci con qualche pistolotto tipo >questo che
>francamente mi fa scappare la voglia di rispondere la volta dopo.
>A parte questo, c'è talmente tanto bordello nel post che hai appena fatto che non so come
>faccia a stare insieme questo programma da 38000 righe di >codice senza chiamare un
>esorcista... e intendo cose tipo

Infatti e per quello che esistono gli addon nelle dll. E da come ho letto sono fatte
apposta esempi Adobe photoshop che non usa solo quelle per dire le case maggiori .

>il parametro lo puoi chiamare come vuoi, anche se esiste una variabile altrove con lo
>stesso nome, basta che PASSI IL VALORE alla funzione quando la >chiami
PECCATO LE 38000 linee di codice non sono tutte uguali altrimenti uscivo dall'uovo di
pasqua tempo prima invece esci tu ora, come vedi dai ..
Che sto ridendo alla grande !


> Result += 0.03341656453 * Math.Cos(4.66925680415 + 6283.0758499914 * t2kJD)
> ecc...ecc... qui ho circa 1000 linee di sommatoria .!

>Per curiosità, sono 1000 righe tutte con lo stesso tipo di operazione?
>cioè
>X * Math.Cos(Y + Z * t2kJD)
Si ma i coefficenti diversi !!!!!!!!!!!!!!!!!!
Altrimenti non cercavo una soluzione, come ti ho scritto non ho una laurea come te', mi
debbo arrangiare .

> Result = String.Format("{0:f15}", (Result * 100000000))
>>Se Result e' definito Double, non ha senso convertirlo in stringa per poi farselo
>>immediatamente ri-convertire (di nascosto) in Double dal framework, che è >>quello che
>>succede con l'istruzione qui sopra
Se hai idea di come posso fare visto che il documento MSDN consiglia questo per fornire un
numero ... di questo tipo es. 3.141592654246456
Almeno dalla documentazione e' cosi' . Formattazione numerica !
ma se hai altre soluzioni perche' non le hai postate cosi imparo ! Tutto semplice lo fanno
gli altri, ma se vuoi insegnare la gente cerca di imparare.


> Dim t2kJD As Double = Val(txtt2kJDEMIL.Text)
> txtResult.Text = (Calcola.EarthL00(CDbl(txtt2kJDEMIL.Text)).ToString)

>Vedi sopra... prendi una stringa da un textbox, la converti in double, poi chiami la
>funzione che vuole un double in input ma invece che dargli la variabile >appena
>convertita, la ri-traformi di nuovo dal textbox (bonus artistico per aver usato Val e
>CDbl nello spazio di due righe per fare la stessa cosa, scegline >una) e dulcis in fundo
>applichi .ToString al risultato che quindi (per come hai applicato Format() al punto
>prima) in totale viene convertito Double->String->Double->String
Come a uno scienziato come te non hanno spiegato che le textbox di come gestiscono i
numeri ?
https://msdn.microsoft.com/it-it/library/9da280t0(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
https://stackoverflow.com/questions/18673377/how-to-compare-val-function-with-in-vb-net
Anche in alcuni listati in MSDN microsoft e' scritto in questo modo, forse ci sara' un
motivo che dici Luca ?

>Ecc... ecc... insomma, quando dicevo di lasciare un attimo da parte il discorso DLL
>esterna, e' perchè mi pare ci sia parecchia confusione gia' nelle basi
>(vedi anche la "soluzione" a colpi di 28 IF dell'altro post), e non mi pareva il caso di
>aggiungere un altro livello di casino.
Avro' anche confusione, e se compari l'altro post mi sono dovuto arrangiare ! E comunque a
modo mio .


Lascia stare i linguaggi sui NG, spesso ci sono solo troll quando chiedi qualcosa ti
mandano anche affangulo. O ti pijano per culo .
Che il gruppo sia diventato stitico, non sono solo io a dirlo, basta che guardi in giro o
leggi in qualche forum in internet e di quanti si lamentano che postando sui NG sono stati
presi per il culo . E anche i post in altri NG, quindi non veniamo a fare le paternali a
me' .
Invece che aiutarsi .
Come vedi ........... ora che ti ho risposto mi sa' che forse ............ vuoi vedere che
sei il padre eterno della programmazione ?
I consigli li accetto la presa per il culo no' mi dispiace.
Se ho fatto una critica basta che ti guardi i post precedenti che, alla fine per un gruppo
come questo sono poche anche le risposte e di poco valore complessivo, e non sono di
grande valore programmazione.

Vedo che non sei neppure capace a salutare, forse sei abituato con i troll di altri
gruppi.
Evito di salutarti visto che io lo fatto prima, ma ora no', almeno ti sentirai di essere a
casa tua e tra i trollazzi e gli stitici .

Franz_aRTiglio

unread,
Jul 26, 2018, 2:37:54 PM7/26/18
to
Ettore scriveva il 26/07/2018 :

> Infatti

Infatti sei un cretino: arrogante, ignorante e ingrato.

Luca D

unread,
Jul 26, 2018, 6:17:33 PM7/26/18
to
On Thursday, July 26, 2018 at 7:52:43 PM UTC+2, Ettore wrote:

> Infatti e per quello che esistono gli addon nelle dll. E da come ho letto
> sono fatte
> apposta esempi Adobe photoshop che non usa solo quelle per dire le case
> maggiori .

Temo tu non abbia capito... non sto questionando che le DLL siano una brutta idea in generale, sto dicendo che sono una brutta idea PER TE, in questo momento.
Sei come uno che sta imparando a fare una costruzione coi Lego e a meta' strada decidi di farla in cemento armato... perchè? quarda come è il modello finito nella versione semplice, poi a fare le figate con le DLL sei sempre in tempo, quando hai capito come scrivere un programma semplice.

> PECCATO LE 38000 linee di codice non sono tutte uguali altrimenti uscivo
> dall'uovo di pasqua tempo prima invece esci tu ora, come vedi dai ..
> Che sto ridendo alla grande !

Qui invece sono proprio certo tu non abbia capito.

> >Per curiosità, sono 1000 righe tutte con lo stesso tipo di operazione?
> >cioè
> >X * Math.Cos(Y + Z * t2kJD)
> Si ma i coefficenti diversi !!!!!!!!!!!!!!!!!!
> Altrimenti non cercavo una soluzione, come ti ho scritto non ho una laurea
> come te', mi debbo arrangiare .

Di nuovo, al 100% non hai capito; se appunto SOLO i coefficenti sono diversi, li metti in una tabella, e fai una iterazione invece che duplicare 1000 somme tutte uguali...

E' esattamente lo stesso approccio visto nell'altra faccenda della Lettera Domenicale, e che di nuovo non hai afferrato, tant'e' che hai risolto con 28 IF invece che due righe. Se coglievi quello, saresti arrivato a una soluzione adatta anche qui... ad ogni modo, il codice è il tuo, divertiti a manutenerlo con la lente di ingrandimento.

> > Result = String.Format("{0:f15}", (Result * 100000000))
> Se hai idea di come posso fare visto che il documento MSDN consiglia questo
> per fornire un numero ... di questo tipo es. 3.141592654246456
> Almeno dalla documentazione e' cosi' . Formattazione numerica !
> ma se hai altre soluzioni perche' non le hai postate cosi imparo ! Tutto
> semplice lo fanno
> gli altri, ma se vuoi insegnare la gente cerca di imparare.

La soluzione e' che la funzione torna il valore COME NUMERO, e la formattazione numerica la fai altrove SE serve e QUANDO serve.
Se definisci la variabile come Double e gli applichi String.Format, il compilatore invece che sputarti in faccia (come dovrebbe, se usassi Option Strict ON nelle opzioni per evitare certe porcherie) cerca di venirti incontro e fa due conversioni implicite Strnga->Double, che non servono a una mazza.

Non ho dubbi che il documento MSDN suggerisca String.Format, ma non da usare così!

>
> > Dim t2kJD As Double = Val(txtt2kJDEMIL.Text)
> > txtResult.Text = (Calcola.EarthL00(CDbl(txtt2kJDEMIL.Text)).ToString)

> Come a uno scienziato come te non hanno spiegato che le textbox di come
> gestiscono i numeri ?
> https://msdn.microsoft.com/it-it/library/9da280t0(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
> https://stackoverflow.com/questions/18673377/how-to-compare-val-function-with-in-vb-net
> Anche in alcuni listati in MSDN microsoft e' scritto in questo modo, forse ci > sara' un motivo che dici Luca ?

C'è un motivo, peccato che, guarda caso, non l'hai capito... questo è come doveva essere la funzione

Sub EarthL00(x As Double) As Double

Dim Result As Double
'mille pippozzi
Return Result * 100000000 'come NUMERO

End Sub

Questa la chiamata

Dim t2kJD As Double = CDbl(txtt2kJDEMIL.Text)
'Qui non stiamo a rileggere due volte il parametro dal textbox, è già nella variabile, passiamo quella

txtResult.Text = String.Format("{0:f15}", (Calcola.EarthL00(t2kJD))
'E finalmente, e solo qui, formattiamo il numero in stringa con i decimali che ti servono

Una sola conversione da stringa a numero per leggere dalla UI, una sola conversione da numero a Stringa per rimetterlo nella UI

> I consigli li accetto la presa per il culo no' mi dispiace.

Mi sarei guardato bene dal prenderti per il culo se non avessi, non una ma svariate volte, dimostrato questo simpatico atteggiamento di uno che non sa fare a+b ma si permette di fare la morale e a dare delle merdacce a quelli che non gli rispondono... non eri mica tenuto a ringraziarmi di nulla, ma se proprio ci tieni, non stai a fare un post con una riga di grazie e 75 di sputtanamento globale agli altri, ma chi cazzo sei?

Se davvero accettassi i consigli, poseresti la tastiera per qualche settimana, ti compreresti un libro sulla programmazione .NET di base, e daresti una letta a quello, perchè quello che stai facendo ora è cercare di risolvere le equazioni di secondo grado quando sei ancora alla matematica della quarta elementare.... non è questione di essere scemi o geni, e' che se a uno mancano le nozioni, per forza poi parte per la tangente e non capisce ne' quello che fa ne' le soluzioni che gli si danno.

Questo posto e' scarso di risposte non perchè stai sul cazzo alla gente (beh, ormai anche quello), ma banalmente perchè non è più frequentato in generale, e in più si fa una fatica bestiale a capire che cacchio chiedi in primis.

> Vedo che non sei neppure capace a salutare, forse sei abituato con i troll di > altri gruppi.
> Evito di salutarti visto che io lo fatto prima, ma ora no', almeno ti sentirai > di essere a casa tua e tra i trollazzi e gli stitici .

Hai mandato tutti in culo dopo che hai avuto una risposta ragionevole, dovevo pure salutarti?! ci sei o ci fai?
0 new messages