PRB: Conflitti con # import EOF quando utilizzo con ADO

Traduzione articoli Traduzione articoli
Identificativo articolo: 166112 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

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:

DUPS.exe
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:
http://technet.microsoft.com/en-us/sysinternals/default.aspx

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:
"The End of DLL Hell"

ProprietÓ

Identificativo articolo: 166112 - Ultima modifica: sabato 22 febbraio 2014 - Revisione: 4.6
Le informazioni in questo articolo si applicano a:
  • Microsoft ActiveX Data Objects 1.0áalle seguenti piattaforme
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft ActiveX Data Objects 2.0áalle seguenti piattaforme
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft ActiveX Data Objects 2.1áalle seguenti piattaforme
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft ActiveX Data Objects 2.5áalle seguenti piattaforme
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft ActiveX Data Objects 2.6áalle seguenti piattaforme
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Data Access Components 2.1 Service Pack 2
Chiavi:á
kbnosurvey kbarchive kbmt kbdownload kbdatabase kbprb kbprogramming KB166112 KbMtit
Traduzione automatica articoli
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
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com