Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 24

Discussione: [vb6] ocx e proprietà

  1. #11
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    78
    Non ho ben capito a cosa serve questa cosa!
    Tu hai un documento lato client e vuoi inviare il numero di pagine al server?
    Perchè!
    Perchè il documento è lato client?
    Non puoi averlo lato server?
    Spiegami bene ciò che vuoi fare!
    Fai molta attenzione poichè gli OCX non possono essere messi in una pagina web con molta facilità!
    Poi... che tipo di server web stai usando?

  2. #12
    Il documento deve essere spedito al server con un modulo di upload, ed il server deve anche sapere quante parole contiene il modulo. per far ciò pensavo fosse più sicuro far estrapolare le info al client ed inviarle al server, ma se tu pensi che vada fatto tutto lato server con una DLL o cose simili io mi fido. Il server è un Windows 2000. Dimenticavo di darti una risposta al "perchè?": è una ditta di traduzioni che vuole automatizzare il preventivo.
    Ciao e grazie.

  3. #13
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    78
    Allora...
    Analizziamo la situazione!

    Problema 1)
    L'utente seleziona il suo documento word e lo invia al server.
    Sai già come fare l'upload del file? Se no fammelo sapere.

    Problema 2)
    Bisogna contare le parole contenute nel documento
    Premetto che, come ho già spiegato ad un'altra persona, creare un OCX potrebbe essere una cosa abbastanza "facile" per chi conosce un po' di VB ma il problema sta nell' inserirlo in una pagina web.
    Quando crei un OCX e lo inserisci in una pagina web l'utente che si collega al sito deve scaricare questo componente che sicuramente lui non ha, bene per una questione di sicurezza del web non è possibile installare componenti sui client all'insaputa del visitatore.
    Cosa puoi fare? Crei l'OCX e il relativo cabinet firmi il cabinet con una certificate server inserisci il tag object all'interno della pagina indicando nel parametro codebase la path dell'cabinet firmato. Risultato all'utente comparirà il messaggio di avviso che esiste un oggetto in quella pagina firmato da te(es:le pagine fatte in flash) ricorda che l'utente può comunque rifiutare il download, quindi questo non mi sembra la soluzione più sicura.
    Io opterei per una dll sul server. Qui sorge un problema! Puoi registrare le dll sul server? Ora non preoccupiamocene.
    Crei una dll con una classe e un metodo

    es: ClasseWord.
    All'interno di questa classe dichiari una function che sarà il suo metodo
    codice:
    Public Function ContaParoleDocument(ByVal strDocSource As String) As Variant
        
    Dim oggettow As Word.Application
    
    Errore:
         For Each oggetto In oggettow.Documents
            oggetto.Close wdDoNotSaveChanges
         Next
         
         CreaWordDocument = -1
         oggettow.Application.Quit
         Set oggettow = Nothing
    
    End Function

  4. #14
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    78
    Allora...
    Analizziamo la situazione!

    Problema 1)
    L'utente seleziona il suo documento word e lo invia al server.
    Sai già come fare l'upload del file? Se no fammelo sapere.

    Problema 2)
    Bisogna contare le parole contenute nel documento
    Premetto che, come ho già spiegato ad un'altra persona, creare un OCX potrebbe essere una cosa abbastanza "facile" per chi conosce un po' di VB ma il problema sta nell' inserirlo in una pagina web.
    Quando crei un OCX e lo inserisci in una pagina web l'utente che si collega al sito deve scaricare questo componente che sicuramente lui non ha, bene per una questione di sicurezza del web non è possibile installare componenti sui client all'insaputa del visitatore.
    Cosa puoi fare? Crei l'OCX e il relativo cabinet firmi il cabinet con una certificate server inserisci il tag object all'interno della pagina indicando nel parametro codebase la path dell'cabinet firmato. Risultato all'utente comparirà il messaggio di avviso che esiste un oggetto in quella pagina firmato da te(es:le pagine fatte in flash) ricorda che l'utente può comunque rifiutare il download, quindi questo non mi sembra la soluzione più sicura.
    Io opterei per una dll sul server. Qui sorge un problema! Puoi registrare le dll sul server? Ora non preoccupiamocene.
    Crei una dll con una classe e un metodo

    es: ClasseWord.
    All'interno di questa classe dichiari una function che sarà il suo metodo
    codice:
    Public Function ContaParoleDocument(ByVal strDocSource As String) As Variant
        
       Dim oggettow As Word.Application
       'Metti qui il codice per aprire e contare le parole del documento
       ContaParoleWord = Numeroparole
    End Function
    Questo è quanto!
    Ricorda che dalla pagina web dovrai chiamare la tua dll specificando la path del documento(strDocSource)
    e semplicemente alla fine della funzione ContaParoleWord essa conterrà il numero di parole
    Ciao e spero di essere stato chiaro

  5. #15
    ciao e grazie mille per la spiegazione, domattina ci proverò ed ti farò sapere il risultato. Mi chiedevo se è possibile per testare la dll usare il PWS e se si come si installa una dll sul PWS. Per il resto dovrei riuscire da solo.
    grazie ancora moltissimo

  6. #16
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    78
    PWS? Non conosco!
    Comunque una dll è testabile direttamente da vb includendo un nuovo progetto standard exe all'interno del progetto activex dll semplicemente facendo File --> add project --> new --> standard exe.
    Definisci il progetto di partenza inserisci la reference della tua dll scrivi una riga di codice che chiama la tua dll e avvia.
    Ciaoooo

  7. #17
    Io ho creato un exe prima della dll per essere sicuro che i metodi funzionassero ed infatti era tutto ok. Poi ho creato la DLL con questo codice:


    Public Function Conta(ByVal strDocSource As String) As Variant
    If strDocSource <> "" Then
    Set wrd = CreateObject("Word.Application")
    wrd.Visible = False
    wrd.Documents.Open strDocSource
    Numeroparole = ActiveDocument.BuiltInDocumentProperties(wdPropert yWords)
    wrd.Documents.Close
    Set wrd = Nothing
    Conta = Numeroparole
    End If
    End Function


    La DLL è tutta qui? Il codice da if fino ad enf if nell'exe funzionava. Ho installato il tutto su PWS ma quando richiamo l'oggetto non mi viene restituito nulla. Sai cosa potrebbe esserci che non va?
    Ora provo a seguire il tuo procedimento, poi ti faccio sapere.

  8. #18
    Il problemapotrebbe essere il valore ritornato dalla funzione. Io mi sono ritrovato con un problema analogo,una DLL completamente funzionante nonmi dava nessun risultato apparente, tolto il valore di ritorno la dll a ripreso a funzionare anche su PSW.
    Prova a modificare il tuo cosice cosi:
    Io ho creato un exe prima della dll per essere sicuro che i metodi funzionassero ed infatti era tutto ok. Poi ho creato la DLL con questo codice:


    Public Function Conta(ByVal strDocSource As String, ByRef Count as variant)
    If strDocSource <> "" Then
    Set wrd = CreateObject("Word.Application")
    wrd.Visible = False
    wrd.Documents.Open strDocSource
    Numeroparole = ActiveDocument. BuiltInDocumentProperties(wdPropertyWord
    s)
    wrd.Documents.Close
    Set wrd = Nothing
    Count = Numeroparole
    End If
    End Function

    Al secondo parametro della funzione poi passerai la variabile da valorizzare.

    Fammi sapere


  9. #19
    ho risolto tutti i problemi!
    La DLL è giusta sbagliavo io a chiamarla
    questo è il modo corretto
    Set wrd =CreateObject("leggi.leggiDoc")
    io la chiamavo Set wrd =CreateObject("leggiDoc")
    Tutti hanno scritto che per registrare una DLL su windows 98 (io ho il ME) si deve usare questo comando:
    c:>regsvr32 c:\percorso\nome.dll
    ma invece ho scoperto che è
    c\window\system:>regsvr32 c:\percorso\nome.dll
    dopo tutto questo il numerino magico mi è apparso! :sexpulp:

    Mi rimane un dubbio anche se in realtà non mi serve per il momento:

    mcathor non riesco a fare l'exe che mi provi la DLL. Con tutta la calma che vuoi mi correggi questo codice e mi dici che devo fare?


    Private Sub b1_Click()
    ind = Form1.Text1
    MsgBox ind
    Set wrd = CreateObject("leggi.leggiDoc")
    Form1.lab1 = wrd.Conta(ind)
    End Sub


    mi da come errore: run-time error '430'
    Class does not support Automation or does not support expected interface

    Ciao e grazie mille mi siete stati di vitale importanza, sopratutto tu mcathor!!!!

  10. #20
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    78
    Ok!!!
    So perfettamente che ora direte che sono un rompi...
    Comunque! Una regola non scritta ma apprezzabile da qualunque programmatore è quella di dare nomi coerenti con il tipo di oggetto si stia utilizzando
    es:
    Una stringa la identificheremo con il prefisso "str" un oggetto con "obj" un textbox con "txt" e così via! (parentesi chiusa)

    Ora parliamo del tuo codice sia la dll che l'exe per testarlo.
    Per prima cosa non istanziare mai nessun tipo di oggetto se non è indispensabile. Quindi la "IF" per verificare che il valore sia arrivato alla dll presuppone il fatto che tu chiami comunque la dll anche se il campo esterno non sia stato valorizzato. Un consiglio... testa il campo dell'applicazione chiamante se valorizzato istanzi la dll altrimenti no. Ora chiamiamo il progetto dll prjLeggi creiamo una classe chiamata clsLeggiDoc e all'interno di quest'ultima scriviamo il seguente codice
    codice:
    Public Function mtdConta(ByVal strDocSource As String) As Variant
        Dim objWord As Word.Application
        Dim strNumParole As String
        
        Set objWord = New Word.Application
                
        objWord.Documents.Open FileName:=strDocSource, ConfirmConversions:=False, _
                ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
                PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
                WritePasswordTemplate:="", Format:=0
        
        strNumParole = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)
        
        objWord.ActiveDocument.Close savechanges:=wdDoNotSaveChanges
        objWord.Application.Quit
        Set objWord = Nothing
        
        mtdConta = strNumParole
    End Function
    Bene... compila la tua dll come dllLeggi.dll. Attenzione!!! Ogni volta che compili la tua dll se non verificherai la binary compatibility scriverai un classid nuovo nel registro, ne scriverai tanti quante volte la compili.
    Perfetto ora abbiamo la dll da poter utilizzare, segui le seguenti istruzioni per creare il tuo testdll.
    Sempre con la dll aperta vai nel menu file-->add project, scegli la scheda new e seleziona un progetto standard exe. Fai click destro sul nuovo progetto e seleziona set as start up, ora con il nuovo progetto selezionato seleziona il menu Project-->References e includi la tua nuova dll (dllLeggi.dll). Scrivi il seguente codice
    codice:
    Private Sub btnEsegui_Click()
        Dim objMiadll As dllLeggi.clsLeggiDoc
        
        Set objMiadll = New dllLeggi.clsLeggiDoc
        LblConteggio = objMiadll.mtdConta(TxtPath.Text)
        Set objMiadll = Nothing
    End Sub
    Metti un break dove più lo ritieni opportuno e lancialo.
    Questo è quanto.
    Ti saluto e spero di essere stato abbastanza chiaro.
    Per qualunque cosa comunque fammi sapere.
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.