2009-04-22 15 views
6

Delphi 2006'dan Delphi 2009'a geçişte bir sorunum var. JVCL kullanan bir proje jvconsts.res'in eksik olduğunu düşünüyor. Dosya kesinlikle orada. Proje arama yolu, dosyanın bulunduğu dizini içerir. "Delphi 2009'da Hata mı Var? -> * .res proje arama yolunda bulunamadı (Delphi 2006'da çalışır)

... bağlayıcı aramalar için:

Ama Delphi Help söylediği gibi dosya bulunması gerektiğini: (daha taşınabilir hale getirmek için benim genel arama yolunda JVCL gerekmez) Dizinler/Şartlı sayfa Projesi ara yolu giriş kutusuna belirtilen dizinlere yılında dosyaları [...] .RES | Bu JVCL sorun değildir Seçenekler iletişim kutusu"

: A minimalist program şunu gösterir:

program ResTest; 

{$R test.res} // not found even if "c:\Test\Res" is in project search path 

begin 
end. 

Bu Delphi 2006 iyi derler ama Delphi 2009. Bazı arama yaptıktan sonra ben bir yol buldum:

İşte
C:\Test\ResTest.dpr 
C:\Test\Res\Test.res 

ResTest.dpr geçerli:

bu dizin yapısını düşünün Delphi'ye dosyanın nerede olduğunu söylemek için: gobal arama yolu veya komut satırı derleyicisini kullanarak -R parametresi.

Ben bu satırları yazarken, ben daha yakın gerçek sorun geliyor: Delphi 2006'da .cfg-Dosya oluşuyor:

-I"c:\Test\Res" 
-U"c:\Test\Res" 
-R"c:\Test\Res" 

Javascipt 3 komuta içine proje arama yolundan değerler halinin kopyası satır seçenekleri ve böylece -R parametresinin doğru değerlere sahip olduğundan emin olur. Dizin

ise (c: \ test \ Res) dahildir Delphi 2009'da

IDE kaynaklanan komut satırını olsun (I "debug" için derleyici çıkışının ayrıntı set) proje arama yolu:

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib" -R"c:\program files\codegear\rad studio\6.0\Lib" -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -K00400000 ResTest.dpr 

dizin genel arama yolunda yer alıyorsa

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -K00400000 ResTest.dpr 

burada görmek Belki onun sert: fark -R parametredir:

Local Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib" 
Global Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res 

Bu yüzden neden çalışmadığı hiç de şaşırtıcı değil. Yerel arama yolu, Delphi 2009'daki -R parametresine eklenmez.

Bunun açıkça bir hata olduğunu söyleyebilirim, ama neden başka hiç kimsenin bu sorunu yok mu? Kullandığımız tüm makinelerde üretebilirim. Belki de hata sadece Delphi 2009'un Almanca versiyonunda var mıdır?

cevap

2

bir geçici çözüm yerine kodunuzda bu koymaktır:

IDE ve komut satırı derleyici ile hem Delphi 2009 ile sistemimde çalışır
{$R res\test.res} 

.

Varolan işlevselliği bozduklarını kabul ettiğimi, Kalite Portalı'na bir rapor eklediniz mi? Değilse, lütfen: ttps: //quality.embarcadero.com (bu, http://qc.embarcadero.com dizinli arama motoru olmak için kullanılır, ancak bu kapatılmıştır; https://quality.embarcadero.com, arama yapmak için ücretsiz bir hesap gerektirir).

+0

Bu bizim kodumuzla çalışır, ancak kaçınmaktan hoşlandığım üçüncü taraf kodunu (JVCL) değiştirmem gerekir. –

+0

Bu hata için QualityCentral'da bir giriş oluşturdum # 73249 –

+2

Üçüncü taraf kodunu değiştirmek istemediğiniz gerçeğine katılıyorum. Rapor için . Sadece http://qc.codegear.com/wc/qcmain.aspx?d=73249 adresinden kontrol edildim, bazı rapor alanlarını değiştirdim, ardından CodeGear'daki Q & A ekibi iç sistemlerinde göreceklerdi –