Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
fonksiyon içinde parametreye default değer atama sorunu
#1
Selamlar

Bir fonksiyon içerisinde Defualt olarak Record tipinde tanımlanan bir parametrenin default değerini atamada sorun yaşıyorum
Bu konuyu nasıl aşabilirim.

Teşekkürler

...
...
type
 TFRPreviewRecord = record
   oADOC: TADOConnection;
   sFormAdi : String;
   sRaporAdi : String;
end;
Const
 DefaultFRPreview : TFRPreviewRecord =
   (oADOC : nil;
    sFormAdi : '';
    sRaporAdi : '');

function fn_X(pFR : TFRPreviewRecord = DefaultFRPreview ): Boolean;   //Bu satır derlenmiyor

implementation





Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#2
Default değer için aynı fonksiyondan bir tane daha yazmalısınız. Yani overload etmelisiniz:
function fn_X(pFR : TFRPreviewRecord): Boolean; overload;

function fn_X: Boolean; overload;

Default değer için olanın implementasyonu:
function fn_X: Boolean;
begin
  fn_X(DefaultFRPreview);
end;
There's no place like 127.0.0.1
WWW
Cevapla
#3
(24-05-2019, Saat: 00:17)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Default değer için aynı fonksiyondan bir tane daha yazmalısınız. Yani overload etmelisiniz:
function fn_X(pFR : TFRPreviewRecord): Boolean; overload;

function fn_X: Boolean; overload;

Default değer için olanın implementasyonu:
function fn_X: Boolean;
begin
  fn_X(DefaultFRPreview);
end;
@SimaWB Hocam olayı tam olarak anlıyamadım
Verdiğiniz örnekte default değeri atama olarak gönderiyoruz. Fakat benim yapmak istediğim declerasyon sırasında defult değer vermek
yani çoklu parametrelerde sondaki default değerleri parametre geçmeden bunu sağlamaya çalışmak istiyorum
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#4
İlkel (primitive) bir tip oluşturmadığınız için varsayılan argüman olarak bir Record tipi geçmenize izin verilmiyor. Bunu ancak her defasında kullanacağınız fonksiyonu bir sınıf içerisinde yazıp sınıfın oluşturucu metodu (constructor) içerisine parametre olarak geçtiğiniz varsayılan tipi sınıf içinde yerel bir record değişkenine atamasını yapıp overload edilen ana metodun içinden dönüş tipi olarak constructor içine geçtiğiniz argümanı döndürebilirsiniz.

Eğer ilkel (primitive) tipler olsaydı varsayılan olarak fn_X(AStatus: boolean = false) şeklinde kullanılabilirdi.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#5

uses
RecordUnit.pas; // Record tip tanım kütüphanesi

type
TMyClass=class
constructor Create(AOwner:TOwner;ADefaultFRPreview:TFRPreviewRecord);
function fn_X: Boolean; overload;
function fn_X(pFR : TFRPreviewRecord): Boolean; overload;
end;

var
_DefaultFRPreview : TFRPreviewRecord;

constructor Create(AOwner:TOwner;ADefaultFRPreview:TFRPreviewRecord);
begin
inherited;
//...
_DefaultFRPreview := ADefaultFRPreview;
//...
end;

function fn_X: Boolean;
begin
  fn_X(_DefaultFRPreview);
end;

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#6
(24-05-2019, Saat: 10:11)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@SimaWB Hocam olayı tam olarak anlıyamadım
Verdiğiniz örnekte default değeri atama olarak gönderiyoruz. Fakat benim yapmak istediğim declerasyon sırasında defult değer vermek
yani çoklu parametrelerde sondaki default değerleri parametre geçmeden bunu sağlamaya çalışmak istiyorum

Parametrenin default değeri ne zaman kullanılır? Siz o paramtereye değer vermeden kullandığınızda. İşte benim yazdığım da tam olarak bunu yapıyor. Aynı fonksiyonu parametreye değer vermeden kullanabilmeniz için bir tane daha tanımladık.
There's no place like 127.0.0.1
WWW
Cevapla
#7
(24-05-2019, Saat: 11:00)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(24-05-2019, Saat: 10:11)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@SimaWB Hocam olayı tam olarak anlıyamadım
Verdiğiniz örnekte default değeri atama olarak gönderiyoruz. Fakat benim yapmak istediğim declerasyon sırasında defult değer vermek
yani çoklu parametrelerde sondaki default değerleri parametre geçmeden bunu sağlamaya çalışmak istiyorum

Parametrenin default değeri ne zaman kullanılır?  Siz o paramtereye değer vermeden kullandığınızda. İşte benim yazdığım da tam olarak bunu yapıyor. Aynı fonksiyonu parametreye değer vermeden kullanabilmeniz için bir tane daha tanımladık.

@SimaWB Teşekkürler

(24-05-2019, Saat: 10:48)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

uses
RecordUnit.pas; // Record tip tanım kütüphanesi

type
TMyClass=class
constructor Create(AOwner:TOwner;ADefaultFRPreview:TFRPreviewRecord);
function fn_X: Boolean; overload;
function fn_X(pFR : TFRPreviewRecord): Boolean; overload;
end;

var
_DefaultFRPreview : TFRPreviewRecord;

constructor Create(AOwner:TOwner;ADefaultFRPreview:TFRPreviewRecord);
begin
inherited;
//...
_DefaultFRPreview := ADefaultFRPreview;
//...
end;

function fn_X: Boolean;
begin
  fn_X(_DefaultFRPreview);
end;

@Abdullah ILGAZ Teşkkürler
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FDMemTable1.Filter Sorunu Hk. pro_imaj 4 116 14-07-2019, Saat: 00:38
Son Yorum: pro_imaj
  Çözüldü. Fastreport ta çalışma anında dataset atama cinarbil 2 104 11-07-2019, Saat: 17:55
Son Yorum: cinarbil
  IPhone resim aktarma sorunu adelphiforumz 10 248 10-07-2019, Saat: 20:00
Son Yorum: SimaWB
  Fastreport barcod yazdirma sorunu TheEAK 2 189 10-07-2019, Saat: 11:10
Son Yorum: TheEAK
  Form içinde exe nasıl çalıştırılır? Cyb3r 2 261 04-07-2019, Saat: 09:53
Son Yorum: Cyb3r



Konuyu Okuyanlar: 1 Ziyaretçi