TDB = record
Key : string[10];
Name : ShortString;
end;
böyle bi record oluşturdum fakat buradaki Name Kısmında string kısmı çok az oluyor ben büyük miktarda yazılar saklamak istiyorum
ne kullanmam gerekir acaba.
Proje dosyamı yollayabilirim isterseniz. Yapmak istediğim asıl maksat. Vİdeo dosyalarımın hepsini tek bir dosyaya gömüp oradan key isimleriyle çağırıp oynatmak stream edip direk oynatıyorum ama bunları gizleyip bi ortamda tutmak istiyorum. Belki başka bi fikirde verebilirsiniz.
TDB = record
Key : string[10];
Uzunluk: Integer;
Data : array of byte;
end;
şeklinde bir yapı kullanılabilir. "Uzunluk" değeri Data'nın uzunluğu olur. Okurken önce Key, ardından Uzunluk okunur. Bunların yerleri belli olduğu için okumada sorun olmaz. Sonra "uzunluk" kadar daha "data" okunur.
Maalesef verdiğiniz örneği incelemek için vaktim yok.
Bence sizin senaryo için TClientDataSet kullanabilirsiniz. Stream'i saklamak için Blob alan tanımlanabilir.
CLientDataset i bir deneyeyim. Bakayım işimi görücek gibi. Peki bu clientdataseti dışarı aktarabilirmiyim bi dosya gibi çünkü bir manager olacak birde player olacak.
Yani ikisi bir dosyadan haberleşsin diye datasetteki veriyi dışarı aktarabilirmiyim.
Hayır gerekmez. Buradaki StoreBlob ve RestoreFile procedure'lerini incelerseniz bir dosyayı nasıl Blob Field'a yükleyebileceğinizi ve Blob Field'dan dosyaya nasıl aktaracağınızı öğrenebilirsiniz.
Projeme Bir adet clientdataset bir adet dataprovider bir adette datasource ekliyorum ama nedense string olarak atadıgım alan dbgridde boş görünüyor ama cds dosyasını not defteri açtıgımda ise veriler görünüyor.
Tam olarak clientdataset ile tüm kaynaklara baktım ama nedense görünmüyor. Delphi xe7 sürümünü kullanıyorum bundan kaynaklanabilirmi. Yada field alanını string değilde başka bi tip mi yapmam gerekiyor. Blob alanda zaten outof memory hatası veriyor nedense. 400mb lara geldiği zaman.
CreateDataSet yapmadan önce Field tanımlarını yapmıyorsanız "field not found" hatası almanız normal.
Tanımlamaları çalışma zamanında yapmak istiyorsanız;
with ClientDataSet1.FieldDefs do
begin
Clear;
with AddFieldDef do
begin
Name := 'ISIM';
DataType := ftString;
Size := 10;
end;
with AddFieldDef do
begin
Name := 'FILE';
DataType := ftBlob;
end;
end;