2016-03-21 27 views
2

yılında 'Dinamik dizi' ve 'dizesinin dizisi' Ben böyle bir sınıfı:Uyumsuz türleri: Delphi

Programmer = Class(Worker) 
private 
    // Some code here 
    programmingLanguages: array of String; 
    numOfProgrammingLanguages: integer; 
public 
    // Some code here 
    procedure SetProgrammingLanguages(newLanguages: array of String); 
    function GetNumOfProgrammingLanguages(languages: array of string) : integer; 
end; 

Ben SetProgrammingLanguages yöntemi için aşağıdaki kodu yazarken bir hata alıyorum:

procedure Programmer.SetProgrammingLanguages(newLanguages: array of String); 
begin 
    programmingLanguages := newLanguages; 
end; 

Incompatible types: 'Dynamic array' and 'array of string'

Bu sorunu nasıl çözebilirim?

+0

Lütfen [açık dizi parametreleri hakkında] makalemi okuyun (http://rvelthuis.de/articles/articles-openarr.html). O yardımcı olabilir. –

cevap

2

Çözüm, önce TProgrammingLanguages = array of string; numaralı yeni bir türü bildirmektir. Daha sonra bunu hem sınıf bildiriminde hem de yöntem parametresinde kullanın.

Şimdi yazdığınız yöntem parametresi, programminglanguages alanı için kullandığınız dinamik dizi türünden farklı olan bir open array parameter.

Open array parameters hakkında bilgi edinmek için bkz. documentation.

+0

Tnx, Benim için çalışıyor. –

+0

Bu riskli bir çözümdür. Şimdi aynı nesneye iki referansınız olacak. Asker, kopya anlambilimini tercih edebilir. –

+0

@DavidHeffernan Daha iyi bir çözüm önerebilir misiniz? –