Çok Yakında Yeni Bir Arayüzle karşınızdayız! http://yeni.delphican.com/

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
  SQl tarih Sorunu Bay_Y 7 195 11-11-2019, Saat: 09:06
Son Yorum: Bay_Y
  Quick Reportta Türkçe sorunu boreas 4 156 08-11-2019, Saat: 00:14
Son Yorum: boreas
  Fastreport barcod yazdirma sorunu TheEAK 15 1.045 07-11-2019, Saat: 15:57
Son Yorum: mcuyan
  diziye benzersiz sayı atama harezmi 1 115 05-11-2019, Saat: 08:38
Son Yorum: serdar
  SOAP WSDL | Tarihi sorunu ve C# import sorunu hk. pro_imaj 2 179 24-10-2019, Saat: 08:51
Son Yorum: sabanakman



Konuyu Okuyanlar: 1 Ziyaretçi