PRB: Conflitti con # import EOF quando utilizzo con ADO

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 166112
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
Con # import, è possibile generare le classi che incapsulano la libreria dei tipi di database API, quali ActiveX Data Objects (ADO), all'interno di un'applicazione windows. Ad esempio:
   // Excerpt from Stdafx.h   #include <afxwin.h>           // MFC core and standard components.   ...   #import <msado15.dll>        //for ADO 1.0, import "msado10.dll" 				
quando questo modo, puoi ricevere da # import per ADO sulla proprietà Recordset.EOF i seguenti errori:
Errore C2629: imprevisto ' breve "
Errore C2238: token imprevisti prima ';'
Lo strumento di DLL Universal problema Risolutore (DUPS.exe) è un esempio che contiene tutte le utilità documentate nel gennaio del 2000 articolo di news di MSDN (informazioni in lingua inglese) "La fine della DLL hell". Controllare che MSDN articolo prima di leggere questo articolo.

Il pacchetto DUPS è un insieme di utilità che è possibile utilizzare per tenere traccia e confrontare le versioni DLL su più computer basati su Windows. Il numero massimo è regolato dall'installazione di SQL Server o Microsoft Access. Il client di Dlister che enumera le DLL in un sistema viene eseguito su Windows 95 o Windows 98, Windows NT 4.0 e Windows 2000. Le utilità di visualizzazione sono state sviluppate in Windows NT 4.0 e Windows 2000 e richiedono Microsoft Access o Microsoft SQL Server. Ne è stato eseguito il test con Microsoft Access 97 e versioni successive e SQL Server 6.5 e versioni successive.
Cause
All'interno di un'applicazione che utilizza stdio.h, Ios.h o streamb.h (inclusi AFXWIN.h), EOF è già stato definito come una costante (-1). # Import tenta di definire la proprietà EOF per Recordset di ADO o RDO di oggetti gruppo di risultati e genera gli errori C2629/C2238 nella seguente riga di codice generato nella msado15.tlh (o msado10.tlh) se viene utilizzato ADO 1.0 file:
VARIANT_BOOL EOF;				
questa riga è tentato di definire una variabile, ma EOF è già definito, come -1. Di conseguenza, questa riga di codice analizza per:
short -1;				
questo non viene compilato perché-1 non è un nome di variabile valido.
Risoluzione
Per risolvere il problema, è possibile utilizzare l'attributo di ridenominazione di # import come segue:
   #import <msado15.dll>    rename( "EOF", "A_EOF" )				
Rename modifica il nome di qualsiasi stringa di "EOF" # Import si trova nella libreria dei tipi specificata su un nuovo valore.

Correzione di un altro è per annullare la definizione EOF prima importazione ADO seguente:
#undef EOF#import <msado15.dll> rename_namespace("ADO20")				
Status
Questo comportamento legato alla progettazione.
Informazioni
Il seguente file è disponibile per il download dall'Area download Microsoft:

Data di rilascio: 14-Gen-2000

Per ulteriori informazioni su come scaricare file di supporto Microsoft, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
119591Come ottenere file di supporto Microsoft dai servizi online
Microsoft analizzati questo file per individuare eventuali virus. Microsoft ha utilizzato il software antivirus più recente disponibile alla data di pubblicazione del file. Il file è archiviato in server con protezione avanzata per impedire modifiche non autorizzate al file. In questo articolo e il codice relativo verrà aggiornate periodicamente. Tutti i commenti sono Benvenuti e verranno considerati in aggiornamenti futuri. (Utilizzare hotlink l'invio nel riquadro di destra per commenti).
Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presume che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli addetti al Supporto Microsoft possono spiegare la funzionalità di una particolare procedura, ma non possono modificare questi esempi per fornire ulteriori funzionalità o realizzare procedure per soddisfare esigenze specifiche.
Se si dispone di esperienza di programmazione limitata, è possibile che desideri contattare un Microsoft Certified Partner o servizi di consulenza Microsoft. Per ulteriori informazioni, visitare questi siti Web di Microsoft:

Microsoft Certified Partner - https://partner.microsoft.com/global/30000104

Microsoft Advisory Services - http://support.microsoft.com/gp/advisoryservice

Per ulteriori informazioni sulle opzioni di supporto disponibili e su come contattare Microsoft, visitare il seguente sito: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSIl pacchetto DUPS può essere utilizzato in un singolo computer o utilizzato per registrare la cronologia DLL di ogni DLL sulla rete. Viene eseguito in Windows 95 a Windows 2000 e in che modalità di più semplice non presenta dipendenze. Il pacchetto DUPS è costituito da diversi visualizzatori di Visual Basic e le tre utilità c ++.

Se si desidera confrontare le DLL di un'applicazione utilizza due computer (computer A e B), eseguire il programma di Dlister.exe. Per impostazione predefinita Dlister crea un file nella directory C:\ con il nome Comp_DLL.txt dove COMP è il nome del computer su cui è in esecuzione Dlister. È inoltre possibile specificare che Dlister scrivere in un database oppure è possibile specificare un'altra directory in cui il file deve essere creato.

Esistono due modi per ignorare Dlisters impostazioni predefinite di attributo. Dlister e i visualizzatori di Visual Basic è possibile ottenere questa chiave del Registro di sistema:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell
E i valori riportati di seguito:
ConnectionString, fileTableDir
È possibile utilizzare l'applet di Visual Basic DllHell\C_clients\ATL4VB\VbregSetup per impostare questi valori oppure è possibile eseguire semplicemente Dlister e crea i valori predefiniti. Ad esempio, se si imposta il parametro ConnectString su:
Provider=SQLOLEDB.1;Initial Catalog=dllHell;Data Source=dsc3_ts;					
causa Dlister scrivere i valori a SQL Server database dllHell, mentre:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dllHell.mdb					
utilizza un database locale di Microsoft Access.

Il secondo metodo per sostituire i valori predefiniti consiste impostando gli attributi nel file DllHell.ini nella directory Dlister.exe. Questi file sono decompressi nella directory DllHell\C_clients\Dlister\Release\.

Un file denominato xdllHell.ini è incluso in dell'esempio con una stringa di connessione che è possibile modificare. (Rinominarlo questo dllHell.ini Se si desidera utilizzarlo.)

Se computer A e computer B, entrambi con ActiveX Data Objects (ADO) è installato, l'approccio più semplice per popolare il database dllHell consiste nell'impostare la stringa di connessione al database di SQL Server o Jet. In alternativa, è possibile eseguire Dlister in modalità di file di testo quindi utilizzare l'utilità c ++ DllHell\C_clients\Dlister\readtxttbl\Release\DlgDtxt2DB.exe leggere il file di testo di output nel database DllHell. È utile per la lettura del testo che i client di dati di posta elettronica è anche l'applicazione MFC ReadTxtTbl. È necessario registrare il server COM DUPS\C_clients\ATL4VB\r1RegMon\ReleaseMinDependency\r1RegMon.dll e DUPS\C_clients\ATL4VB\readDlls\R1readTxtMod\ReleaseMinDependency\R1readTxtMod.dll utilizzare i visualizzatori di Visual Basic.

È possibile attivare i checksum CRC impostando la chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell ComputeCRC su 0 x 1 nei sistemi che eseguono Windows 2000. Una volta che si passa a questa chiave, è possibile aggiungere ai Preferiti. Gli utenti di Windows NT 4 devono passare manualmente questa chiave.

Creazione del Database DllHell

È consigliabile utilizzare SQL Server 7.0, ma funziona anche in Microsoft Access 2000. Per creare il database DLLhell è possibile utilizzare SQL Server Enterprise Manager per creare un database vuoto denominato DLLhell. Da SQL Server Query Analyzer selezionare DLLhell al database discesa listbox finestra. Eseguire lo script di DllHell\SQL\dllHellSchema.sql in questa finestra e crea tutte le tabelle necessarie per Dllhell.

In alternativa, è possibile eseguire il comando seguente in SQL Server Query Analyzer:
EXEC sp_attach_single_file_db 'DLLhell', 'DllHell\SQL\dllHell_Data.MDF'				
il codice crea il database e tutte le tabelle.

Confronto tra le DLL nei due sistemi

Per confrontare tutte le DLL su due sistemi, utilizzare l'utilità di Visual Basic cmpWithList nella directory Dllhell\VBviewers\VBcmpList2.

Per limitare i confronti DLL (in genere per solo tali DLL carica un'applicazione di destinazione) è inoltre necessario un file di testo (txt) contenente le DLL che si desidera confrontare. È possibile creare l'elenco con proprietà o uno dei numerosi strumenti (ad esempio ListDLLs e Process Explorer) dal seguente sito Web:

Utilizzando cmpWithList

Quando si avvia cmpWithList viene visualizzato un elenco di computer in database di DLLhell nel casella di riepilogo computer. Per impostazione predefinita, i primi due computer nell'elenco sono selezionati per il confronto. Per modificare il computer di destinazione, selezionarla nella casella di riepilogo e quindi selezionare il pulsante Modifica . Le Comp1 Comp2 modificare caselle Mostra quali computer verranno confrontati.

Utilizzare il controllo di spostamento di directory per selezionare il file di testo che conterrà i nomi di tutte le DLL dei due sistemi che si desidera confrontare. Doppie facendo clic sul file di testo si seleziona.

Se non si desidera confrontare la DLL in alcune directory (in genere non desiderati relative alle DLL in winnt\system32\dllcache e WINNT\ $ NtServicePackUninstall $) fare doppio clic sulla riga della griglia. Verrà richiesto di aggiungere la directory alla tabella _skipDir. DLL nel _skipDir non sono considerate per il confronto.

L'installazione di rete automatici DLL controllo

Impostare la pianificazione nei sistemi Windows 2000:

Iniziare con il file di comando dllHell\rcomp.cmd. Modificare le seguenti variabili di ambiente per riflettere il sistema:
  1. Dpath: Directory sul client dove Dlister crei l'elenco dei file testo delle DLL sul client. Il valore predefinito è C:\temp\DLLhell\
  2. COMP: Nome del computer client.
  3. ChangeFileLocation: È necessario copiare il percorso di rete completo in cui la DLL differenze file. Questa è la directory che HellsMonitor il servizio espressioni di controllo.
  4. ServerLst: Il percorso di rete cui si trova la directory C_clients del pacchetto DLLhell.
Sulla barra delle applicazioni, fare clic sul pulsante Start , scegliere programmi , Accessori , utilità di sistema e infine Operazioni pianificate .

Attivare l'applet Aggiungi operazione pianificata . Passare alla directory locale contenente il file rcomp.cmd e selezionarlo. Dopo aver selezionato le opzioni che presenta la procedura guidata, viene aggiunto il file rcomp.cmd i processi pianificati. La prima volta che si imposta il processo pianificato, selezionare l'ora di inizio 2 a 5 minuti in futuro, poterne verificare le impostazioni. Spesso è utile rimuovere il commento il comando pause affinché sia possibile visualizzare gli eventuali errori che si verificano.

Registrare il file di servizio di monitoraggio

Dal Dllhell\C_clients\HellsMonitor\ReleaseUMinDependency eseguire questo comando, che registra il servizio di directory:
HellsMonitor /Service				
la parte più importante è il client di monitor. Si tratta di un'interfaccia grafica che consente di aggiungere o rimuovere le directory da monitorare. Consente inoltre di specificare l'applicazione per l'esecuzione (con il pulsante utile). Per il sistema di monitoraggio DUPS, l'applicazione è Dllhell\C_clients\Dlister\ReadTxtTblCmdLine\Debug\ReadTxtTblCmdLine.exe.

Per aggiungere una directory da controllare, fare clic su Aggiungi . Questo consente di aprire una directory Sfoglia dialogo in cui è possibile selezionare la directory al quale si desidera monitorare. Per rimuovere una directory o directory, selezionare le directory che si desidera rimuovere e quindi scegliere Rimuovi . Per specificare l'applicazione per eseguire entrambi i tipi in o una visualizzazione a esso. Se non si specifica un percorso che deve essere nel percorso di sistema in un punto qualsiasi. Fare clic quindi su di un set per impostare il monitor per eseguire l'applicazione quando viene rilevata una modifica.

Nota : il pulsante di insieme è attivato solo quando si modifica l'esecuzione da ciò che è attualmente impostato dell'applicazione. Il pulsante di rimozione è attivato solo quando è selezionata per la rimozione di directory.
Riferimenti
Per ulteriori informazioni, vedere quanto segue:
DUPS

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 166112 - Ultima revisione: 02/22/2014 20:02:12 - Revisione: 4.6

Microsoft ActiveX Data Objects 1.0, Microsoft ActiveX Data Objects 2.0, Microsoft ActiveX Data Objects 2.1, Microsoft ActiveX Data Objects 2.5, Microsoft ActiveX Data Objects 2.6, Microsoft Data Access Components 2.1 Service Pack 2

  • kbnosurvey kbarchive kbmt kbdownload kbdatabase kbprb kbprogramming KB166112 KbMtit
Feedback