OleVariant değişkene değer atanması

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ToysunStory
Üye
Mesajlar: 8
Kayıt: 16 Kas 2005 11:45

OleVariant değişkene değer atanması

Mesaj gönderen ToysunStory »

Merhabalar,

VB ile hazırlanmış bir ActiveX DLL dosyasını kullanmaya çalışıyorum. Kitapçığında yazılı olan değerleri son derece uygun bir şekilde yerleştirdim fakat bir değişkene kitapçıkta belirtilen değeri atayamıyorum.

VB Kodu:

degisken.FSFoulingFactor = 0#

olarak verilmiş. Delphi bu alanı OleVariant olarak almış, ben kodu aşağıdaki şekilde yazınca değer yazımı Delphi'ye uymadığı için hata alıyorum.

degisken.FSFoulingFactor:=0#;

Diğer değişkenlerle alakalı herhangi bir sorun görünmüyor. Tek problem burada karşıma çıktı. Bunu nasıl çözebileceğim hakkında bilgi olan var mı?

Not: bu arada karakter kodlarını vererek de denedim yine olmadı

degisken.FSFoulingFactor:=#48#35;
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Kod: Tümünü seç

degisken.FSFoulingFactor = 0;
böyle denedin mi?
ToysunStory
Üye
Mesajlar: 8
Kayıt: 16 Kas 2005 11:45

Mesaj gönderen ToysunStory »

hocam denedim ama diyez (#) olmadan kod işlemiyor :(
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

string değer olabilir o zaman veya char:

Kod: Tümünü seç

degisken.FSFoulingFactor:= #0;
veya

Kod: Tümünü seç

degisken.FSFoulingFactor:= '0#';
ToysunStory
Üye
Mesajlar: 8
Kayıt: 16 Kas 2005 11:45

Mesaj gönderen ToysunStory »

Hocam yazdıklarınızı denediğimde Type Mismatch hatası alıyorum.
ToysunStory
Üye
Mesajlar: 8
Kayıt: 16 Kas 2005 11:45

Mesaj gönderen ToysunStory »

:( Sanırım bunun çözümü pek mümkün görünmüyor sabahtan buyana interneti karıştırıyorum ama çare yok.

Neyse peki soruyu şu şekle getirip sorabilmek mümkün mü? VB ile hazırlanmış olan ve tarifi de ona göre gelen DLL dosyasını yine VB ile çalıştıran bir program yazıp, bu programı delphi ile yazdığım program çalışırken çağırıp içinden sonuç verilerini import edebilir miyim? Bununla ilgili herhangi bir kod var mıdır?
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Merak etme çözümü vardır, öyle fantastik yollara başvurma :) Kitapçıkta orası hakkında ne yazdığını yapıştırsana buraya belki öyle çözüm buluruz. Sonuçta bir veritipi var. Assembly yazar yine yaparız. Öyle değilmi CoderLord :)
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

OLE'ye ne Assembly yapcaz abi. :)
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

önce vb de 0# ın ne olduğunu öğrenmek lazım. charmı? integermi?
bunu biliyorsanız şu şekilde problem olmaması lazım,

Kod: Tümünü seç

var 
 tmp : variant;
....
tmp := '0'; //
tmp := 0; //
tmp := $0; // artık bunlardan hangisi ise... deneme yanılma yapın isterseniz

degisken.FSFoulingFactor := tmp;
.-.-.-.-.-.-.-. ^_^
ToysunStory
Üye
Mesajlar: 8
Kayıt: 16 Kas 2005 11:45

Mesaj gönderen ToysunStory »

Kitapçıktaki VB kodu:

Kod: Tümünü seç

Private Sub Command1_Click()
p.CoilsType = List1.ListIndex + 1
p.CoilsGeometry = 1
p.CalculationMode = WithoutFluidRate
p.FinMaterialCode = 1 ‘Value from table 1
p.TubeMaterialCode = 2 ‘Value from table 1
p.AirFlow = CDbl(Text2.Text)
p.AirInletTemp = CDbl(Text3.Text)
p.AirInletRelHum = CDbl(Text4.Text)
If Option1.Value = True Then
p.PrintingTest = PrintingTestfile
End If
If Option2.Value = True Then
p.PrintingTest = JumpPrintingTestfile
End If
Select Case (List1.ListIndex + 1)
Case 1 To 2
p.FluidType = LiquidPure ‘Value from table 14
p.FluidCode = 1 ‘Value from table 2
p.TempFluidIn = CDbl(Text5.Text)
p.TempFluidOut = CDbl(Text6.Text)
Label18.Visible = False
Label17.Visible = False
Text18.Visible = False
Text17.Visible = False
Case 3 To 4, 6
p.FluidType = BiPhase ‘Value from table 14
p.FluidCode = 26 ‘Value from table 6
p.EvaporationTemp = CDbl(Text5.Text)
p.CondensationTemp = CDbl(Text6.Text)
p.Rapl = CDbl(Text6.Text)
p.GSotr = CDbl(Text18.Text)
p.GSurr = CDbl(Text17.Text)
Case (5)
ps = CDbl(Text5.Text)
ts = CDbl(Text6.Text)
p.Press = ps
p.CondensationTemp = ts
p.GSotr = CDbl(Text18.Text)
p.GSurr = CDbl(Text17.Text)
End Select
p.NRows = CDbl(Text11.Text)
p.CoilHeight = CDbl(Text10.Text)
p.CoilLength = CDbl(Text9.Text)
p.FinPitch = CDbl(Text8.Text)
p.NCirc = CDbl(Text7.Text)
p.NTubes = CDbl(Text12.Text)
p.SecurityFactor = SecurityF_minus00 ‘Value from table 13
p.AirSideFoulingFactor = 0
p.FSFoulingFactor = 0#
p.AtmPressure = 1 * 1.01325
p.Show
Text16.Text = Format(p.Result(1), "0.00")
Text15.Text = Format(p.Result(10), "0.00")
Text14.Text = Format(p.Result(14), "0.00")
Text1.Text = Format(p.Result(20), "0.00")
Text13.Text = Format(p.Result(19) * 100, "0.00")
Text1.Text = Format(p.Result(20) * 100000, "0.00")
End Sub
Bu değerle ilgili herhangi bri açıklama yok yani standart bir değer.
Cevapla