record type & dll

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

record type & dll

Mesaj gönderen true_false »

merhabalar

Kod: Tümünü seç

function compile_xml(xml:IXMLREQUESTType):Boolean;export;
begin
  Result := False;
            with xml do
            begin
              parsed.Base.base_ID := ID;
              parsed.Base.Base_ver := VERSION;
....
.
.
.
.
            end;
    Result := True;
   end;
bu kod parçacığı dll'imin içinde bir function

Kod: Tümünü seç

Function compile_xml(xml:IXMLREQUESTType):boolean;far;external '..\xml.dll';

ile parsed.pas unitimden çağırıyorum
bu unitimde record typlerimi oluşturdum

bunlar

Kod: Tümünü seç

    
      type
      TBase = Record
      base_ID :string;
      Base_ver:string;
      seasion_id : string;
      end;

dll'ime debug yapabilmem için dll'i çağırdığım exe'yi parametre olarak geçtim
dll'i çağırdığım exede aşşağıdaki kodu kullanarak

Kod: Tümünü seç

 if  compile_xml(xml) then
    begin
  //  Memo1.Lines.Add('dfsf');
    Memo1.Lines.Add(Base.Base_ver);
    end;
dll'den fonksiyonumu çalıştırıyom ve debuga başlıyom xml dosyamdan versiyon bilgisini id bilgisini break pointle gömrebiliyom fakat dll'den atadığım bu bilgileri main formumda göremiyorum. memoya boşluk atıyo halbuki ben runtime anında dll'den versiyon bilgisini break pointle görebiliyom çok ilginç yardımlarınızı bekliyom
type
Tform1 = class(Tform)
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Dll ile exe'yi farklı farklı düşünmelisin. Dll'deki global olan bir değişkene veya kayda erişebilmek bir fonksiyon ile export yapmalısın. Dll'den bilgi alırken ve bilgi gönderirken fonksiyonları kullanmalısın. Bu yüzden xml parametresi "var" olarak tanımlanmalı. Tavsiyem işi garantiye almak için, xml parametresini var tanımlamak ve fonksiyon içinde bunu "temp" gibi bir başka değişkene kopyalamak ve işlemlerini bu temp değişkeninde yaptıktan sonra tekrar xml parametresine bu temp değişkenini tekrar atamalısın.
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Mesaj gönderen true_false »

@fatihtolgaata yaptığım şey aslında sadece bir değişken atamasıydı ama handle ları farklı olan iki formdan birine global olarak tanımladığım değişkenlere değerler atıyorum... bunu debug anında bile gördüm nasıl olurda main formumda göremezdim.. aslında bir projede hepimiz şunu yapmazmıyız

Kod: Tümünü seç

form3.sub_str:='değişken';
bu yoldan çıkarak değişkenlere dll'den böyle bir atama sundum ama malesef yemedi. ilgin ve alakan için saol.
type
Tform1 = class(Tform)
Cevapla