PRB: Konflikt mit EOF beim Verwenden von # Import mit ADO

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 166112 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Mit # Import ist es möglich, Klassen zu generieren, die die Typbibliothek des Datenbank-APIs, wie z. B. ActiveX Data Objects (ADO) in einer Windows-Anwendung zu kapseln. Zum Beispiel:
   // Excerpt from Stdafx.h
   #include <afxwin.h>           // MFC core and standard components.
   ...
   #import <msado15.dll>        //for ADO 1.0, import "msado10.dll"
 
				
bei dabei möglicherweise die folgenden Fehler aus der # Import für ADO für die Recordset.EOF-Eigenschaft:
C2629 Fehler: Unerwarteter ' short '
Fehler C2238: Unerwartete(s) Token vor ';'
Das Tool DLL Universal Problem Solver (DUPS.exe) ist ein Beispiel, das alle Dienstprogramme im Januar 2000 dokumentiert enthält Microsoft Developer Network (MSDN)-News-Artikel "End der DLL-Hölle." Bitte überprüfen Sie die MSDN-Artikel vor dem Lesen dieses Artikels.

Das Paket DUPS ist eine Sammlung von Dienstprogrammen, die Sie zum Verfolgen und Vergleichen von DLL-Versionen auf mehreren Windows-basierten Computern verwenden können. Die maximale Anzahl unterliegt Ihrer Installation von SQL Server oder Microsoft Access. Der Dlister-Client, der die DLLs auf einem System auflistet, wird auf Windows 95 oder Windows 98, Windows NT 4.0 und Windows 2000 ausgeführt. Die Dienstprogramme anzeigen unter Windows NT 4.0 und Windows 2000 entwickelt wurden, und Microsoft Access oder Microsoft SQL Server erforderlich. Es wurde mit Microsoft Access 97 und höher und SQL Server 6.5 und höher getestet.

Ursache

Innerhalb einer Anwendung, die stdio.h, Ios.h oder streamb.h (einschließlich AFXWIN.h) verwendet, ist EOF bereits als Konstante (-1) definiert worden. Der # Import versucht dann, definieren die EOF-Eigenschaft für ADO Recordset oder RDO des Resultset-Objekte, und die C2629-C2238-Fehler in der folgenden Zeile des generierten Code in der msado15.tlh (oder msado10.tlh) generiert, wenn ADO 1.0 verwendet wird-Datei:
VARIANT_BOOL EOF;
				
dieser Zeile versuchen, eine Variable definieren, aber EOF wurde bereits definiert es als-1. Als Ergebnis dieser Codezeile zu analysiert:
short -1;
				
dieser nicht kompiliert werden da-1 keiner Variablenname ist.

Lösung

Um dies zu korrigieren, können Sie das Rename-Attribut des # Import wie folgt:
   #import <msado15.dll>
    rename( "EOF", "A_EOF" )
				
Umbenennen Ändert den Namen des jede "EOF" Zeichenfolge, die # Import in die angegebene Typbibliothek auf einen neuen Wert findet.

Darin, dass ein anderes Update EOF aufzuheben, vor dem Importieren von ADO folgt:
#undef EOF
#import <msado15.dll> rename_namespace("ADO20")
				

Status

Es handelt sich hierbei um ein beabsichtigtes Verhalten.

Weitere Informationen

Die folgende Datei steht im Microsoft Download Center zum Download zur Verfügung:

DUPS.exe
Freigabedatum: Jan-14-2000

Weitere Informationen zum Download von Microsoft Support-Dateien finden Sie in folgendem Artikel der Microsoft Knowledge Base:
119591So erhalten Sie Dateien vom Microsoft Support im Internet
Microsoft hat diese Datei auf Viren überprüft. Microsoft hat dazu die neueste Software zur Virenerkennung verwendet, die zum Zeitpunkt der Bereitstellung verfügbar war. Die Datei befindet sich auf Servern mit verstärkter Sicherheit, wodurch nicht autorisierte Änderungen an der Datei weitestgehend verhindert werden. Dieser Artikel und den zugehörigen Code werden regelmäßig aktualisiert. Alle Kommentare sind Willkommen und bei zukünftigen Aktualisierungen berücksichtigt werden sollen. (Verwenden Sie die Submit-Hotlink im rechten Frame für Kommentare ein.)
Microsoft bietet Programmierbeispiele für Abbildung nur ohne Gewährleistung oder konkludent, einschließlich, aber nicht beschränkt auf konkludenten Garantien der Handelsüblichkeit und/oder Eignung für einen bestimmten Zweck. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen. Spezialisten von Microsoft Support Services können bei Erläuterung die Funktionalität einer bestimmten Prozedur helfen, Sie werden ändert jedoch nicht Beispielen bieten Funktionen hinzugefügt oder Verfahren, um Ihren speziellen Anforderungen erstellen.
Wenn Sie Programmiererfahrung, beschränkt haben, sollten Sie ein Microsoft Certified Partner oder die Microsoft Advisory Services wenden. Weitere Informationen finden Sie auf diese Websites von Microsoft:

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

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

Weitere Informationen zu den Supportoptionen, die verfügbar sind und wie Sie Microsoft kontaktieren besuchen Sie in der folgenden Website: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSDas Paket DUPS kann auf einem Computer verwendet oder die DLL Versionsgeschichte jeder DLL im Netzwerk verfolgen verwendet werden. Es führt auf Windows 95 auf Windows 2000 und in seiner einfachste Modus keine Abhängigkeiten aufweist. Das Paket DUPS besteht aus drei C++-Dienstprogramme und einige Visual Basic-Viewer.

Wenn Sie nur die DLLs vergleichen möchten eine Anwendung auf zwei Computern verwendet (Computer A und Computer B), das Dlister.exe-Programm ausführen. Standardmäßig erstellt Dlister eine Datei im Verzeichnis C:\ mit dem Namen Comp_DLL.txt wobei Comp der Name des Computers Dlister ist. Sie können auch angeben, dass Dlister in eine Datenbank schreiben, oder Sie können angeben, dass ein anderes Verzeichnis, in dem die Datei erstellt werden soll.

Es gibt zwei Möglichkeiten, Dlisters Attribut Standardwerte zu überschreiben. Dlister und die Visual Basic-Viewer erhalten diesen Registrierungsschlüssel:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell
Und die folgenden Werte:
ConnectionString, fileTableDir
Können Sie das VBA-Applet DllHell\C_clients\ATL4VB\VbregSetup zum Festlegen dieser Werte oder Sie können einfach Dlister ausführen und Standardwerte erstellt. Um Einstellung die ConnectString beispielsweise:
Provider=SQLOLEDB.1;Initial Catalog=dllHell;Data Source=dsc3_ts;
					
bewirkt, dass Dlister zum Schreiben von Werten in der SQL Server Datenbank DllHell, während:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dllHell.mdb
					
verwendet eine lokale Microsoft Access-Datenbank.

Die zweite Möglichkeit zum Überschreiben der Standardwerte ist durch Festlegen der Attribute in der Datei DllHell.ini im Verzeichnis Dlister.exe. Diese Dateien sind in das Verzeichnis DllHell\C_clients\Dlister\Release\ entpackt.

Eine Datei namens xdllHell.ini ist in dem Beispiel mit einer Verbindungszeichenfolge enthalten, die Sie ändern können. (Benennen Sie diese dllHell.ini, wenn Sie es verwenden möchten.)

Wenn Computer A und Computer B beide (ActiveX Data Objects) installiert haben, haben das einfachste Verfahren zum Auffüllen der Datenbank DllHell wird die Verbindungszeichenfolge der SQL Server oder Jet-Datenbank festgelegt. Alternativ können Sie Dlister im Text-Datei-Modus ausführen dann verwenden Sie das C++-Dienstprogramm zum Lesen der Ausgabe-Text-Datei in die Datenbank DllHell DllHell\C_clients\Dlister\readtxttbl\Release\DlgDtxt2DB.exe. Die ReadTxtTbl MFC-Anwendung eignet sich auch für das Lesen in den Text, den Daten-Clients e-mail. Sie müssen COM-Servern registrieren DUPS\C_clients\ATL4VB\r1RegMon\ReleaseMinDependency\r1RegMon.dll und DUPS\C_clients\ATL4VB\readDlls\R1readTxtMod\ReleaseMinDependency\R1readTxtMod.dll die Visual Basic-Viewer zu verwenden.

Sie können CRC-Prüfsumme, durch Festlegen des Registrierungsschlüssels HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell ComputeCRC auf 0 x 1 auf Systemen mit Windows 2000. Nachdem Sie diesen Schlüssel navigieren, können Sie es zu Ihren Favoriten hinzufügen. Windows NT 4-Benutzer müssen manuell auf diesen Schlüssel navigieren.

Erstellen der Datenbank DllHell

SQL Server 7.0 wird empfohlen, aber Microsoft Access 2000 auch funktioniert. So erstellen Sie die Datenbank DLLhell können Sie SQL Server Enterprise Manager zum Erstellen einer leeren Datenbank, die mit dem Namen DLLhell. Von SQL Server Query Analyzer im Fenster wählen DLLhell aus der Datenbank-Dropdown - Listenfeld. In diesem Fenster das DllHell\SQL\dllHellSchema.sql-Skript ausführen und alle Tabellen für Dllhell benötigt erstellt.

Alternativ können Sie den folgenden Befehl in der SQL Server Query Analyzer ausführen:
EXEC sp_attach_single_file_db 'DLLhell', 'DllHell\SQL\dllHell_Data.MDF'
				
der Code erstellt die Datenbank und alle Tabellen.

Vergleichen die DLLs auf zwei Systemen

Zum Vergleich verwenden alle DLLs auf beiden Systemen CmpWithList Visual Basic-Programm im Verzeichnis Dllhell\VBviewers\VBcmpList2.

Um die DLL-Vergleiche zu beschränken (i. d. r. zum nur diese DLLs eine Zielanwendung lädt) auch benötigen Sie eine Textdatei (.txt), mit der DLLs, die Sie vergleichen möchten. Sie können diese Liste mit Abhängigkeiten oder eines mehrere Tools (z. B. ListDLLs und Process Explorer) von der folgenden Website erstellen:
http://technet.microsoft.com/en-us/sysinternals/default.aspx

Mithilfe von cmpWithList

Beim Starten von CmpWithList zeigt es eine Liste von Computern in der Datenbank DLLhell im Listenfeld Computern. Standardmäßig sind die ersten zwei Computer in der Liste für den Vergleich ausgewählt. Um den Zielcomputer zu ändern, markieren Sie ihn in das Listenfeld und wählen Sie die Schaltfläche Ändern . Die Comp1 und Comp2 bearbeiten Felder anzeigen, welche Computer Sie verglichen werden soll.

Verwenden Sie das Verzeichnis Navigationssteuerelement markieren Sie die Textdatei, die die Namen aller DLLs enthält auf den beiden Systemen verglichen werden soll. Doppelklicken auf die Textdatei ausgewählt.

Wenn Sie in einige DLLs vergleichen möchten (normalerweise Sie nicht DLLs in winnt\system32\dllcache und WINNT\ $ NtServicePackUninstall $ kümmern) Verzeichnisse doppelklicken Sie auf die Zeile im Datenblatt. Sie werden aufgefordert, das Verzeichnis der _skipDir-Tabelle hinzufügen. DLLs in den _skipDir werden für den Vergleich nicht berücksichtigt.

Automatische Netzwerk-DLL installieren Überwachung

Einrichten der Zeitplan auf Windows 2000-Systemen:

Beginnen Sie mit der Befehlsdatei dllHell\rcomp.cmd. Ändern Sie Ihr System entsprechend die folgenden Umgebungsvariablen:
  1. Dpath: Verzeichnis auf dem Client, in dem Dlister die Dateiliste Text Dlls auf dem Client erstellt. Der Standardwert ist C:\temp\DLLhell\
  2. COMP: Der Name des Clientcomputers.
  3. ChangeFileLocation: Der vollständigen Netzwerkpfad, auf dem die DLL-Datei Unterschiede, sollten kopiert werden. Dies ist das Verzeichnis, das HellsMonitor Dienst überwacht.
  4. ServerLst: Der Netzwerkpfad, wo sich das Verzeichnis C_clients des Pakets DLLhell befindet.
Klicken Sie auf der Taskleiste auf die Schaltfläche Start , zeigen Sie auf Programme , zeigen Sie auf Zubehör , zeigen Sie auf Systemprogramme , und klicken dann auf Geplante Vorgänge .

Aktivieren Sie das Applet Geplante Tasks . Wechseln Sie zu für das lokale Verzeichnis, die rcomp.cmd-Datei enthält, und wählen Sie ihn. Nach dem Auswählen der Optionen, die des Assistenten stellt, wird die Datei rcomp.cmd geplante Aufträge hinzugefügt. Wählen Sie zum ersten Mal der geplante Auftrag einrichten die Startzeit in der Zukunft 2 bis 5 Minuten, damit die Einstellungen zu testen. Es ist häufig sinnvoll, den Befehl Pause Auskommentierung aufheben, so dass Sie alle Fehler sehen können, die auftreten.

Registrieren Sie die Datei Service Monitoring

Aus der Dllhell\C_clients\HellsMonitor\ReleaseUMinDependency Verzeichnis dieses Befehls den Dienst registriert ausgeführt:
HellsMonitor /Service
				
der wichtigste Teil ist der Client Monitor. Dies ist eine grafische Benutzeroberfläche, mit dem Sie hinzufügen oder Entfernen der Verzeichnisse überwachen kann. Sie können auch an die Anwendung (mit einer praktischen durchsuchen-Schaltfläche) ausgeführt. Für die DUPS Überwachungssystem ist die Anwendung Dllhell\C_clients\Dlister\ReadTxtTblCmdLine\Debug\ReadTxtTblCmdLine.exe.

Um eine zu überwachende Verzeichnis hinzuzufügen, klicken Sie auf Hinzufügen . Dieses wird geöffnet, ein Verzeichnis suchen-Dialogfeld, in denen Sie in das Verzeichnis durchsuchen können, überwachen möchten. Zum Entfernen wählen Sie ein Verzeichnis oder Verzeichnisse die Verzeichnisse, die Sie entfernen möchten und klicken Sie dann auf Entfernen . Um die Anwendung zum Ausführen von entweder in oder durchsuchen zu angeben. Wenn Sie keinen Pfad angeben muss im Systempfad irgendwo sein. Klicken Sie dann auf Festlegen , um den Monitor, die Anwendung auszuführen, wenn eine Änderung erkannt wird festzulegen.

Hinweis : die Satz-Schaltfläche ist nur aktiviert, wenn ändern Sie die Anwendung zum Ausführen von was derzeit festgelegt ist. Die Schaltfläche Entfernen ist aktiviert, nur wenn Sie Verzeichnisse, die zum Entfernen ausgewählt haben.

Informationsquellen

Weitere Informationen finden Sie unter:
"The End of DLL Hell"

Eigenschaften

Artikel-ID: 166112 - Geändert am: Samstag, 22. Februar 2014 - Version: 4.6
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ActiveX Data Objects 1.0, wenn verwendet mit:
    • 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, wenn verwendet mit:
    • 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, wenn verwendet mit:
    • 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, wenn verwendet mit:
    • 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, wenn verwendet mit:
    • 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
Keywords: 
kbnosurvey kbarchive kbmt kbdownload kbdatabase kbprb kbprogramming KB166112 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 166112
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

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