| Pagina principale | Nomina | Cerca | Robaccia |
C'ho da ddire 'na cossa mia brumbrum ★ / C'ho da ddire 'na cossa mia /  

Amici programmatori .. un aiuto.

Paggina  Paggina 1 de 20:  1  2  3  4  5  ...  16  17  18  19  20  Successivo »  
fancazzista
8----> 


#1 | Postato: 9 Nov 2006 14:49 | Modificato da: fancazzista 
Beh, diciamo che il messaggio è chiaramente rivolto agli amici programmatori ... C :-)

Lo scrivo qua perché non so più che pesci prendere ...

'nzomma la situazione è questa ... il capo m'ha chiesto di scrivere una sorgente twain "virtuale". che hanno fatto, si son venduti degli scanner senza stampantina build-in perché gl'hanno venduto la nostra. Ma chiaramente la nostra non è comandabile via specifiche twain, per questo devo fare una sorgente che apre un'altra sorgente e che quando qualcuno gli manda un comando diretto secondo standard alla stampantina io l'intercetto e converto il comando nel nostro formato in maniera tale che l'utente (anzi, il programmatore che userà sta cosa) crederà d'avere a che fare con un driver twain normale, invece il lavoro "sporco" lo faccio io dentro.

Bene, a parte il fatto che è già un casino fare una sorgente twain, lasciamo stare ... NON è possibile aprire una sorgente twain all'interno di un'altra. A questo punto un management saggio avrebbe stoppato tutto ... mi è stato chiesto d'andare avanti ed ormai è troppo tempo che sono su sta cosa e sento già le spine al culo.

Pertanto ... supponete che io ho una struttura del genere in C:

[CODE]typedef struct
{
TW_UINT32 DG;
TW_UINT16 DAT;
TW_UINT16 MSG;
TW_MEMREF pData;
} TWMSG
[/CODE]

i primi tre non sono altro che 3 numeri interi. L'ultimo è un puntatore che a seconda dei casi punterà a una struttura opportuna (su un totale di 3).

Ora ... devo passare questi parametri ad una funzione

[CODE]
int CallDSMEntry(TW_UINT32, TW_UINT16, TW_UINT16, TW_MEMREF);
[/CODE]

Semplice no? Peccato che come vi dicevo, questa funzione, che viene bindata da una DLL non la posso invocare dalla sorgente, per cui mi sono dovuto inventare un processo esterno che si scambia dati con la sorgente registrando il contenuto di questa struttura su un file (lato sorgente).
Insomma .. st'eseguibile una volta che legge 'sto file (che è registrato in modalità binaria) lo mette dentro lo stesso tipo di struttura e passa la stessa alla famosa funzione "non chiamabile".

Ma il programmetto di merda non legge un cazzo. Esempio:

[CODE]
twInfoExp.DAT = 1;
twInfoExp.DG = 1;
twInfoExp.MSG = 1;
twInfoExp.pData = "Gennaro";

fp = fopen("C:\\tosource.bin", "wb");
fwrite(&twInfoExp, sizeof(TW_INFO_EXP), 1, fp);
fclose(fp);
[/CODE]

N.B.: twInfoExp è la struttura di sopra con un nome diverso eh
quando vado a leggere:

[CODE]
fread(&twInfoExp, sizeof(TW_INFO_EXP), 1, fp);
fclose(fp);
[/CODE]

mi ritrovo il campo pData VUOTO.

Oh, insomma ... sicuramente il post è più uno sfogo che altro ... ma se qualche anima pia (Leo, Ottimio... Prof ...) mi da 'na mano ... anche solo per parlare ... per chiarirmi le idee ...

Profeta
<----8----> 


#2 | Postato: 9 Nov 2006 15:03 
thedailywtf.com è il posto per la tua esperienza.
Per il codice, hai detto bene, c'è da fermarsi e ragionare.

Ottimio
Amministratore 


#3 | Postato: 9 Nov 2006 15:24 
Il campo pData non è vuoto, contiene i quattro byte dell'indirizzo a cui puntava. Naturalmente, nello spazio di memoria di un altro programma quell'indirizzo è privo di significato. Devi serializzare la struttura.

Prima di usare un file, comunque, guarda se Windows non ha delle API migliori per l'IPC

fancazzista
8----> 


#4 | Postato: 9 Nov 2006 15:41 
Citazione: Ottimio
Il campo pData non è vuoto, contiene i quattro byte dell'indirizzo a cui puntava. Naturalmente, nello spazio di memoria di un altro programma quell'indirizzo è privo di significato. Devi serializzare la struttura.


Si, scusa, intendevo che era vuoto come stringa :-P

Citazione: Ottimio
Prima di usare un file, comunque, guarda se Windows non ha delle API migliori per l'IPC

Boh ... in realtà la cosa migliore sarebbe stata quella di creare un exe ActiveX da cui istanziare un oggetto da usare all'interno della sorgente (l'exe activex "vive" per conto suo, quindi posso fare la chiamata alla CallDSMEntry senza problemi) ma in un tempo "breve" in C non si ci riesce e in VisualBasic (MERDA) è facile ma non c'è modo di fargli prendere quella roba la come parametri.

Vabbé ... spero che si rendano conto che mi stanno facendo perdere una montagna di tempo per nulla.

alex
alchimista 


#5 | Postato: 9 Nov 2006 15:44 
Citazione: fancazzista
VisualBasic (MERDA)

Ma cacchio, non eri tu che dicevi sempre bene di VB? O__o

Citazione: fancazzista
spero che si rendano conto che mi stanno facendo perdere una montagna di tempo per nulla.

Hai voglia, prima di andare in pensione...

fancazzista
8----> 


#6 | Postato: 9 Nov 2006 15:52 
Citazione: alex
Ma cacchio, non eri tu che dicevi sempre bene di VB? O__o


Attenzione .. non confondiamo ... io parlo bene di .Net non di VB6!!

Profeta
<----8----> 


#7 | Postato: 9 Nov 2006 15:53 
IN VB6????

fancazzista
8----> 


#8 | Postato: 9 Nov 2006 16:02 
Citazione: Profeta
IN VB6????

No, il driver è chiaramente scritto in C (anzi ... meglio ... il C++ della Microsoft), ma questo per aprire un'altra sorgente deve spedire i parametri della cosiddetta tripletta (i membri della struttura) ad una funzione CallDSMEntry che è l'unico entrypoint esportato dalla DLL twain (twain_32.dll). Il problema sta che la sorgente non può bindare la DLL twain e chiamare quella funzione (se no s'incastra tutto), e quindi ci vuole un eseguibile esterno.

L'ideale era realizzare un EXE ActiveX che è "bindabile" anche dalla sorgente come un qualsiasi oggetto. A quel punto bastava sfruttare la classe messa a disposizione dall'EXE. Ma in C ci vuole una vita e l'ho dovuto scartare. In VB6 si fa in un attimo e funziona pure, però la particolare classe che devo creare ha bisogno dei tipi definiti da twain.h ... ora i TW_UINT32/16 sono infondo dei normali integer, ma il TW_MEMREF è ovviamente un puntatore eh ... VB6 non ha i puntatori :-)

sara_bz
8----> 


#9 | Postato: 31 Ott 2008 10:36 
non ho trovato un thread più adatto e non voglio aprirne un altro.


domanda: mysql 5 non ha il supporto per le foreign keys se le tabelle sono specificate in MyISAM?

ho capito bene?

Leo


#10 | Postato: 31 Ott 2008 10:52 
oh, yes

non so se poi l'hanno aggiunta ma storicamente è una delle principali carenze dell'engine myisam rispetto a innodb

Leo


#11 | Postato: 31 Ott 2008 10:53 

sara_bz
8----> 


#12 | Postato: 31 Ott 2008 10:56 
Leo:
oh, yes

cheppalle.

Leo:
to'

grassie. cheppalle.....

Leo


#13 | Postato: 31 Ott 2008 10:58 
eh me spiasce... te manno un superpoke va'

zeitblom
zitella 


#14 | Postato: 31 Ott 2008 12:37 
Leo:
eh me spiasce... te manno un superpoke va'


e a me gnente?

Rosetta
cambio paggina 

#15 | Postato: 31 Ott 2008 16:18 
zeitblom:
e a me gnente?

Questa è la misura che bb sta scadendo di tono.

Un anno fa Zeit sarebbe stato ricoperto di robe...

zeitblom
zitella 


#16 | Postato: 31 Ott 2008 20:45 
te manco sai cosa son i superpoke.. torna nell'oblio dell'oldismo e taci.

Rosetta
cambio paggina 

#17 | Postato: 31 Ott 2008 21:36 
zeitblom:
te manco sai cosa son i superpoke..

No, ma scommetti che indovino le preferenze sessuali di chi se li scambia?

zeitblom:
torna nell'oblio dell'oldismo e taci

Torna a scuola.

Quattro errori lessicali e grammaticali in una frase di quattro parole...

zeitblom
zitella 


#18 | Postato: 31 Ott 2008 21:38 
rosicchione, quando sfotti tu ti piace e quando ti rispondono gli altri ti infiammi subito.. ah, come sei secsi.

zazaz
bi-babbo 


#19 | Postato: 31 Ott 2008 21:50 
zeitblom:
GneGneGne

Rosetta:
GnaGnaGna



Ammici di aMMòòòòòòòreeeeee!!!



:D

Rosetta
cambio paggina 

#20 | Postato: 31 Ott 2008 21:55 
zeitblom:
ah, come sei secsi.


zeitblom
zitella 


#21 | Postato: 31 Ott 2008 22:03 
te piacerebbe eh?

non sei il mio tipo

lucaraf
8----> 


#22 | Postato: 31 Ott 2008 22:16 
cazzo sono i superpoke?

zeitblom
zitella 


#23 | Postato: 1 Nov 2008 01:07 
son una roba belisssimissimissima, l'unico vero motivo per cui iscriversi a facebook

sara_bz
8----> 


#24 | Postato: 4 Mar 2009 17:36 
amicici programmatori
soprattutto fancazzista: so che hai la risposta al mio quesito!!

una libreria java che mandi a cagare swing e awt?
sto usando swingX ma mi fa schifo.

possibly non commerciale.

ProFeto
8----> 


#25 | Postato: 4 Mar 2009 17:44 
swt?

Paggina  Paggina 1 de 20:  1  2  3  4  5  ...  16  17  18  19  20  Successivo » 
C'ho da ddire 'na cossa mia brumbrum ★ / C'ho da ddire 'na cossa mia / Amici programmatori .. un aiuto. Daccapo!
Rispondi va Pigia qui per vedere il messaggio quotato
 

 ?
No, devi registrarti.
 
 
  brumbrum ★ Powered by Chat Forum Software miniBB ®