Errore runtime ...other memory is corrupt

giovedì 08 marzo 2007 - 12.04

Walimay Profilo | Newbie

ho un pezzo di codice che legge un file da disco e lo trasforma in pdf.

il codice:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Se lo eseguo in debug funziona, se lo lancio dall'exe definitivo mi da questo errore:

...
06/03/2007 17.46.47 - Open Doc c:\adele\docs\20070306174636_EM07000022_ISTR.POLIZZA.GDT.doc
06/03/2007 17.46.47 - ERRORE step 1 Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
...

ovviamente il file esiste, e' stato creato da una routine precedente...

non so piu' come uscirne.

Chi mi indirizza verso la soluzione?

grazie...

Waly

Brainkiller Profilo | Guru

>ho un pezzo di codice che legge un file da disco e lo trasforma
>in pdf.

Ma sta riga qui:

wApp.Documents.Open

che classi sono ? Di che libreria ?
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Walimay Profilo | Newbie

Ciao,
grazie per la risposta.

ecco come la creo:

Dim wApp As Word.Application

ovviamente ho aggiunto Word Objects nei reference.

grazie...

Brainkiller Profilo | Guru

>Ciao,
>grazie per la risposta.
>ecco come la creo:
>Dim wApp As Word.Application
>ovviamente ho aggiunto Word Objects nei reference.

Non è che per caso quel file è già aperto altrove ? ed è magari locckato da qualcun altro ?
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Walimay Profilo | Newbie

non direi, perche' la procedura fa in pratica questo:

Apre un file di testo, ne fa il parse e passa i dati ad una routine che riempie con mailmerge un template di Word.

una volta salvato il file uso word.application.quit per uscire da Word e successivamente elimino l'oggetto con word.application = nothing

a quel punto altri controlli determinano se il word va convertito in PDF, e qui entra in gioco la procedura in esame.

Se vuoi ti posto il codice, ma come avrai potuto vedere il problema nasce all'apertura del file:

wApp.Documents.Open(Doc.ToString)

dovrei successivamente stamparlo su una stampante PostScript e poi convertirlo in pdf con la dll di GhostScript.

con VBExpress non posso cambiare il modo di esecuzione in debug per verificare che funzioni.

Potrei provare a mettere un wait x secondi per aspettare che il sistema rilasci l'oggetto, se casomai fosse quello. Ma dai processi in esecuzione WinWord.exe chiude correttamente.

sigh !

Waly

Brainkiller Profilo | Guru

>wApp.Documents.Open(Doc.ToString)

E se provi ad aprire un document odi Word con questa istruzione togliendo tutte le istruzioni che vengono prima, cosa succede ? Questo per capire se il problema viene già da prima come penso io oppure no.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Walimay Profilo | Newbie

Ciao,

adesso ho modificato cosi:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

nel pomeriggio ho a disposizione un pc per provare e ti faccio sapere. (devo provarlo su un pc che non abbia VS sopra)

Grazie mille...

Waly

Walimay Profilo | Newbie

ultimo aggiornamento:

non funziona. porca paletta.

il codice adesso e' questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

adesso provo ad infilarlo in un progetto da solo e vediamo cosa succede.

l'errore e' sempre lo stesso..

maledizione.
Walimay

Walimay

newbie developer in vb.net

Sistemista ambiente MSWindows

Walimay Profilo | Newbie

confermo:

Sub stampaword(ByVal doc As String)
Dim printer As String = "Adele"
Dim inputfile As String = "C:\temp.gs"
Dim DefaultPrinter As Object
Dim objword As New Word.Application
Dim objdoc As New Word.Document
objword.Visible = False
objdoc = objword.Documents.Add()
DefaultPrinter = objword.ActivePrinter
objword.ActivePrinter = printer
Me.RichTextBox1.Text = "Pronto a stampare: " & doc.ToString + vbCrLf + RichTextBox1.Text
objword.PrintOut(, , , Inputfile, , , , , , , True, , doc.ToString, , , , , , )
Me.RichTextBox1.Text = "Stampa su ps fatta " + vbCrLf + RichTextBox1.Text
objword.ActivePrinter = DefaultPrinter
objword.Quit()
DefaultPrinter = Nothing
objword = Nothing
objdoc = Nothing
End Sub

funziona alla perfezione.
Walimay

newbie developer in vb.net

Sistemista ambiente MSWindows
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5