2 adet dizi var diyelim. bunları kısa yoldan birbirie nasıl eşitleyebiliriz?
yani döngü yapmadan:
for i:=0 to max do array1:=array2 ;
Başka bir sorunum ise şudur. şimdi bir byte array var. bu dizinin elemenları başka dizilere ayrıştırılacak. mesela: tek indexli olanlar bir dizi çift indexli olanlar 2. dizi gibi. fakat bütün bunları döngü gibi uzun bir işlem yapmadan kısa yoldan yapmam gerekiyor. diziler arası işlemler için önereceğiniz başarılı bileşenler de olabilir.
Kısa yoldan eşitleme yapmak istiyorsan pointer kullanman gerekecek. Ornegin pchar kullanabilirsin oldukca hizlandiracaktir. Eger cok buyuk datalarla ugrasacaksan 1.000.000 adet falan gibi TmemoryStream de kullanabilirsin.
Tek indexli olanları baska diziye cift indexli olanlari baska diziye atmak icin ise bildiğim kadarıyla döngüden başka çaren yok. Ama emin ol delphi de bu tip işler gerçekten çok hıizlı. Gönül rahatlığıyla döngülerini kullanabilirsin...
memoryStream.writebuffer çok ideal. bir butona basıldığında kendi oluşturduğum bir byte array üzerinde denedim. herşey tamam. dizi 32k uzunluğunda filan idi. sorun yok. 1024k olsa da sorun olmaz buna inanıyorum. fakat sorun , benim programın kullandığı dll de olsa gerek. oraya ait byte array değişkeni sadece blockwrite'a izin veriyor. memorystream'e yazıldığında boş görünüyor. fena bir durum. bir de ilgili forumlara sorayım :(
Senin kullandığın dizinin pointer adresi olmasın? Bir de yazacağın zaman örneğin 32000 byte yazacaksın arrayinin ismi de aByteArray olsun. mstream.write(aByteArray[0],32000) okuyacağın zaman ise mstream.read(aByteArray[0],32000) diye kullan...
:oops: procedure oku;
var
pbuf: pByteArray;
ms: Tmemorystream;
begin
...
...
ms.WriteBuffer(pbuf^, size);
end;
:) :D