Bir dizeyi bir TStream'e dönüştürmeyi deniyorum. Aşağıdaki kodum bana CopyFrom satırında bir "Özet Hata" mesajı veriyor. Burada bir tuğla duvara karşıyım, bunun nasıl çözüleceğine dair herhangi bir fikir var mı?Dize TStream
procedure StringToStream(const AString: string; out AStream: TStream);
var
SS: TStringStream;
begin
SS := TStringStream.Create(AString);
try
SS.Position := 0;
AStream.CopyFrom(SS, SS.Size); //This is where the "Abstract Error" gets thrown
finally
SS.Free;
end;
end;
Kuyu, açıkça bir yöntem çağırdığında soyut bir hata alırsa AStream * atanır * Muhtemelen bazı alt sınıflar yerine bir TStream olarak başlatılmıştır –
Haklısınız ve AStream için verilen değerin gerçek beyanının tam olarak TStream olması gerektiğinden (aksi takdirde derleyici şikayette bulunur) yüksek bir olasılık vardır. Aslında bazı kalıtsal sınıf yerine soyut TStream bir örneğidir. Ama bunun dışında hala bir out parametresi yapmak için akıllıca bir karar değildir. –
Yardım teklif eden herkese teşekkürler. Ben sadece bir TStream ile diyordum, Şimdi fark ettiğim şey çok anlamlı değil, prosedürü bir TMemoryStream ile çağırmaya karar verdim ve prosedürü değiştirdim (rem outing out): yordamı StringToStream (const AString: string; AStream: TMemoryStream); var SS: TStringStream; başlangıç SS: = TStringStream.Create (AString); SS.Position: = 0; AStream.CopyFrom (SS, SS.Size); nihayet SS.Free; sonu; sonu; Bu, sorunu çözmüş görünüyor. Yine, çok teşekkürler! –