SORUN: Alma EOF when using ile'çakışma ADO ile

Makale çevirileri Makale çevirileri
Makale numarası: 166112 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Alma ile veritabanının APı'NIN, ActiveX Data Objects (ADO) gibi bir <a0>windows</a0> uygulamasında typelib kapsülleyen bir sınıf oluşturmak mümkündür. Örneğin:
   // Excerpt from Stdafx.h
   #include <afxwin.h>           // MFC core and standard components.
   ...
   #import <msado15.dll>        //for ADO 1.0, import "msado10.dll"
 
				
bunu yapmak için ADO alma Recordset.EOF özellikte gelen komutu aşağıdaki hataları alabilirsiniz:
C2629 hata: Beklenmeyen ' kısa ('
C2238 hata: beklenmeyen token(s) önceki ';'
DLL Evrensel sorun Çözücü aracı (DUPS.exe), Ocak 2000'de belgelenen tüm yardımcı programları içeren bir örnek ise Microsoft Developer Network (MSDN) haber makalesi "Sonuna DLL bekçisi." Lütfen bu MSDN gözden makale, önce bu makalenin okunuyor.

DUPS paketi izlemek ve birden çok Windows tabanlı bir bilgisayarda DLL sürümlerini karşılaştırmak için kullanabileceğiniz yardımcı programlar kümesidir. En çok, SQL Server veya Microsoft Access yüklemenizin tarafından yönetilir. Bir sistemde dll sıralar Dlister istemci, Windows 95 veya Windows 98, Windows NT 4.0 ve Windows 2000 üzerinde çalışır. Izleme yardımcı programları, Windows NT 4.0 ve Windows 2000 üzerinde geliştirilen ve Microsoft Access veya Microsoft SQL Server gerektirir. Microsoft Access 97 ve sonraki sürümleri ve SQL Server 6.5 ve daha sonraki sürümleri ile sınanmıştır.

Neden

Stdio.h, <a2>Ios.h</a2> veya <a4>Streamb.h (Afxwin.h dahil) kullanan bir uygulama içinde EOF (-1) sabiti olarak zaten tanımlandı. Alma, EOF özelliği, ADO'NUN Recordset veya RDO tanımlamak daha sonra çalışır Resultset nesneler olduğundan ve <a1>ADO</a1> 1.0 kullanılırsa C2629/C2238 hatalar üretilen kod şu satırda msado15.tlh (veya msado10.tlh) içinde oluşturur dosya:
VARIANT_BOOL EOF;
				
değişken tanımlamak bu satırı çalışıyor, ancak EOF zaten bu -1 tanımlı. Için sonuç olarak, bu kod satırını ayrıştırır:
short -1;
				
-1, geçerli bir değişken adı olmadığı için bu derleme değil.

Çözüm

Bu sorunu gidermek için alma <a1>rename</a1> özniteliğini aşağıdaki gibi kullanabilirsiniz:
   #import <msado15.dll>
    rename( "EOF", "A_EOF" )
				
Rename belirtilen tür kitaplığı'yeni bir değer için yer alma bulduğu herhangi bir "EOF" dizesini adını değiştirir.

ADO alma izleyen önce EOF tanımsız için başka bir düzeltmedir:
#undef EOF
#import <msado15.dll> rename_namespace("ADO20")
				

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Aşağıdaki dosya Microsoft Yükleme Merkezi'nden yüklenebilir:

DUPS.exe
Yayım Tarihi: Ocak-14-2000

Microsoft destek dosyalarını karşıdan yükleme konusunda ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
119591Microsoft Destek Dosyaları Çevrimiçi Hizmetler'den Nasıl Alınır
Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın kullanıma sunulduğu tarihteki en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardım eden geliştirilmiş güvenliğe sahip sunucularda depolanır. Bu makalede ve beraberindeki kodunu düzenli olarak güncelleştirilir. Tüm açıklamaları edilir ve gelecekteki güncelleştirmelerinde alınır. (Gönderme hotlink sağ çerçevede yorum oluşturma için kullanın.)
Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; satılabilirlik ve/veya belirli bir amaca uygunluk da dahil, ancak bununla sınırlı olmamak kaydıyla, örtülü veya açık garanti vermez. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek uzmanları, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.
Programlama deneyiminiz kısıtlıysa, bir Microsoft Sertifikalı İş Ortağı'na veya Microsoft Danışmanlık Hizmetleri'ne başvurabilirsiniz. Daha fazla bilgi için şu Microsoft Web sitelerini ziyaret edin:

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

Microsoft danışma belgesi Hizmetleri - http://support.microsoft.com/gp/advisoryservice

Kullanılabilir destek seçenekleri ve Microsoft'a başvurma konusunda daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSDUPS paketi tek bir bilgisayarda kullanılan veya ağ üzerindeki her DLL DLL geçmişini izlemek için kullanılan. Hiç bağımlılığı, basit mod olan Windows 95 Windows 2000 (ve içinde çalışır. DUPS paketi üç C++ yardımcı programları ve bazı Visual Basic görüntüleyiciler oluşur.

Yalnızca DLL'lerin karşılaştırmak istiyorsanız, iki bilgisayar bir Web uygulaması kullanarak (Bilgisayar A ve B bilgisayarı) Dlister.exe programı çalıştırın. Varsayılan olarak, Dlister C:\ dizininde karşılaştırması Dlister çalıştıran bilgisayarın adı olduğu yerdeki Comp_DLL.txt adlı bir dosya oluşturur. Ayrıca belirtebilirsiniz, Dlister bir veritabanına veya başka bir dizin dosyası oluşturulmalı belirtebilirsiniz.

Dlisters özniteliği varsayılanlarını geçersiz kılmak için iki yol vardır. Bu kayıt defteri anahtarı, Dlister ve Visual Basic görüntüleyiciler edinin:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell
Ve aşağıdaki değerleri:
ConnectionString, fileTableDir
Visual Basic uygulaması kullanabilirsiniz veya bu değerleri ayarlamak için DllHell\C_clients\ATL4VB\VbregSetup yalnızca Dlister çalıştırabilir ve varsayılan değerleri oluşturur. Örneğin, BağlantıDizesi ayarlamak:
Provider=SQLOLEDB.1;Initial Catalog=dllHell;Data Source=dsc3_ts;
					
SQL sunucusuna değerler yazmak Dlister neden dllHell veritabanı çalışırken:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dllHell.mdb
					
yerel bir Microsoft Access veritabanı'nı kullanır.

Varsayılan değerleri geçersiz kılmak için ikinci yolu özniteliklerini Dlister.exe dizin DllHell.ini dosyasında ayarlanmasıdır. Bu DllHell\C_clients\Dlister\Release\ dizine unzipped dosyalarıdır.

Değiştirebileceğiniz bir bağlantı dizesi ile örnek xdllHell.ini adlı BIR dosyaya eklenir. (Kullanmak istiyorsanız, bu dllHell.ini yeniden adlandırın.)

Bilgisayar A ve B bilgisayarı ActiveX Data Objects (ADO) yüklüyse, her iki sahip dllHell veritabanı doldurmak için en basit yaklaşım için SQL Server'ı veya Jet veritabanı bağlantı dizesi ayarlamaktır. Alternatif olarak, Dlister metin dosyası modunda çalıştırmak sonra C++ yardımcı programını kullanarak DllHell\C_clients\Dlister\readtxttbl\Release\DlgDtxt2DB.exe DllHell veritabanına çıktı metin dosyası okunamıyor. ReadTxtTbl MFC uygulaması veri istemcilerinin, e-posta metin okuma için de yararlıdır. COM sunucuları kaydetmelisiniz DUPS\C_clients\ATL4VB\r1RegMon\ReleaseMinDependency\r1RegMon.dll ve DUPS\C_clients\ATL4VB\readDlls\R1readTxtMod\ReleaseMinDependency\R1readTxtMod.dll Visual Basic görüntüleyiciler kullanın.

Windows 2000 çalıştıran sistemler üzerinde 0x1 olarak HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\KB Samples\r1dllHell ComputeCRC kayıt defteri anahtarını ayarlayarak CRC sağlama toplamlarını etkinleştirebilirsiniz. Bu anahtara gidin sonra sık kullanılanlarınızı ekleyebilirsiniz. Windows NT 4 kullanıcıların el ile şu anahtara gidin gerekir.

DllHell veritabanı oluşturma

SQL Server 7.0 önerilir, ancak Microsoft Access 2000 de çalışır. DLLhell veritabanı oluşturmak için SQL Server Enterprise Manager DLLhell adında boş bir veritabanı oluşturmak için kullanabilirsiniz. SQL Server Query Analyzer'den penceresinde DLLhell veritabanı açılan açılır liste kutusunu seçin. Bu pencerede DllHell\SQL\dllHellSchema.sql komut dosyası çalıştırma ve Dllhell için gereken tüm tabloları oluşturur.

Alternatif olarak, SQL Server Query Analyzer'da aşağıdaki komutu çalıştırabilirsiniz:
EXEC sp_attach_single_file_db 'DLLhell', 'DllHell\SQL\dllHell_Data.MDF'
				
kod veritabanı ve tüm tabloları oluşturur.

Iki sistemler üzerinde dll karşılaştırma

Karşılaştırmak için iki sistemlerde tüm dll Dllhell\VBviewers\VBcmpList2 dizininde cmpWithList Visual Basic yardımcı programını kullanın.

DLL karşılaştırmaları sınırlamak için (bir hedef uygulama yükler genellikle yalnızca bu DLL için), karşılaştırmak istediğiniz dll'i içeren bir metin (.txt) dosyası da olmalıdır. Bu liste, Depends veya aşağıdaki Web sitesinden (ListDLLs ve Process Explorer gibi) çeşitli araçları birini oluşturabilirsiniz:
http://technet.microsoft.com/en-us/sysinternals/default.aspx

CmpWithList kullanma

CmpWithList başladığında bilgisayarlar liste kutusu içinde <a1>DLLhell</a1> veritabanındaki bilgisayarların bir listesini gösterir. Varsayılan olarak, listedeki ilk iki bilgisayar, karşılaştırma için seçilir. Hedef bilgisayar değiştirmek için <a0></a0>, liste kutusunda seçin ve sonra Değiştir düğmesini seçin. Comp1 ve Comp2 hangi bilgisayarların karşılaştıracaktır kutuları gösteri düzenleyin.

Dizin gezinti denetimi iki sistemlerde karşılaştırmak istediğiniz tüm DLL adını içeren metin dosyasını seçmek için kullanın. Metin dosyasını çift tıklatarak bunu seçer.

Dll bazı karşılaştırmak istiyorsanız, satır kılavuzundaki dizinleri (genellikle, DLL'leri winnt\system32\dllcache ve WINNT\ $ NtServicePackUninstall $ düşünmeniz değil) çift tıklatın. _SkipDir tabloya dizin eklemek için istenir. Karşılaştırma için DLL _skipDir olarak düşünülür.

Otomatik ağ DLL yükleme denetimi

Ayarlama Windows 2000 sistemlerinde zamanlama sırasında:

DllHell\rcomp.cmd komut dosyası ile başlatın. Sistem yansıtması için aşağıdaki ortam değişkenlerini değiştir:
  1. Dpath: Dizin istemcideki burada Dlister istemcide dll metin dosya listesini oluşturur. Varsayılan C:\temp\DLLhell\ olur.
  2. COMP: İstemci bilgisayarın adı.
  3. : ChangeFileLocation burada da DLL dosyasını farkları tam ağ yolu yeniden kopyalanması gerekir. Bu dizindir, HellsMonitor Gözcüsü hizmet.
  4. ServerLst: C_clients dizin DLLhell paketin bulunduğu ağ yolu.
Araç çubuğunda, Başlat düğmesini tıklatın, Programlar ' ın üzerine gidin, Donatılar ' ın üzerine gelin, Sistem Araçları ' nın üzerine gelin ve Zamanlanmış Görevler ' i tıklatın.

Zamanlanmış Görev Ekle uygulamasını etkinleştirin. Rcomp.cmd dosyasını içeren yerel dizine gözatın ve seçin. Sihirbaz sunan seçenekleri seçtikten sonra zamanlanmış işler için rcomp.cmd dosya eklenir. Çizelgelenen proje ayarladıysanız, ilk kurduğunuzda, ayarlarınızı sınamanız için 2 ile 5 dakika sonra başlangıç saatini seçin. Genellikle, pause komutunun uncomment, oluşabilecek hatalar görebilmeniz kullanışlıdır.

Dosya Service izleme kaydı

Dllhell\C_clients\HellsMonitor\ReleaseUMinDependency gelen dizin hizmeti kaydettirir bu komutu çalıştırmak:
HellsMonitor /Service
				
en önemli bölümü monitör istemcidir. Hangi dizinlerinin izlenecek ekleyip olanak tanıyan bir GUI budur. Ayrıca uygulama (kullanışlı bir Gözat düğmesi) çalıştırmak için belirlemenizi sağlar. Sistem izleme DUPS'için uygulama Dllhell\C_clients\Dlister\ReadTxtTblCmdLine\Debug\ReadTxtTblCmdLine.exe olacak.

Izlenecek bir dizin eklemek için Ekle ' yi tıklatın. Burada, dizine, göz atabiliyor dizin Gözat iletişim kutusunu istediğiniz izlemek için bu açar. Kaldırmak için bir dizin veya dizinleri kaldırın ve sonra da <a2>Kaldır</a2>'ı tıklatın, istediğiniz dizinleri seçin. Her iki türün içinde veya gözatma için çalıştırılacak uygulama belirtmek için. Yol belirtmezseniz, sistem yolunda yerde olması vardır. Sonra bir değişiklik algılandığında, bu uygulamayı çalıştırmak için monitör ayarlamak için Ayarla ' yı tıklatın.

Not: Ayarla düğmesini yalnızca, ne, geçerli olarak ayarlanmış olan gelen çalıştırılacak uygulama değiştirdiğinizde etkinleştirilir. Kaldır düğmesi, yalnızca dizin kaldırmak için seçili olduğunda etkindir.

Referanslar

Daha fazla bilgi için bkz:
"The End of DLL Hell"

Özellikler

Makale numarası: 166112 - Last Review: 22 Şubat 2014 Cumartesi - Gözden geçirme: 4.6
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ActiveX Data Objects 1.0, Ne zaman ne ile kullanilir:
    • 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, Ne zaman ne ile kullanilir:
    • 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, Ne zaman ne ile kullanilir:
    • 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, Ne zaman ne ile kullanilir:
    • 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, Ne zaman ne ile kullanilir:
    • 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
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbdownload kbdatabase kbprb kbprogramming KB166112 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:166112

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