TFileStream i pliki *.gif

0

Witam !
Chce zapisac do jednego pliku (obrazki.img) okolo 15 roznych plików gif. Wszystko jest ok ale jesli chce te 15 plików odczytac to pojawia sie problem. jesli ktos moze mi pomoc to z gory dzieki pozdrawiam [browar] :)

0

Spróbuj opracować jakiś własny format pliku, w nagłówku zapisz ilość plików gif oraz ich pozycje (offsety) w pliku img...
potem tylko piszesz procedurkę do obsługi tego formatu... i sprawa załatwiona...

0

problem w tym ze kombinuje jak odczytac z tego pliku jeden plik zapisany...ale mam problemy.. wiesz moze gdzie znajde stronke z malym kursem jak taki plik odczytac ????

0

Zrób np. plik, w którym:
-na początku znajdzie się ogólna liczba obrazków
-tyle razy, ile jest obrazków zapisujesz:
-rozmiar gifa
-dane gifa, o rozmiarze równym temu powyżej :)

i nie powinieneś mieć problemów z odczytaniem.

0

czyli bedzie cos takiego??? podam taki maly przyklad.. :D
dajmy na to:

Obrazek[1]:=464326;
Obrazek[2]:=43663;
Obrazek[3]:=14224;
i pozniej w pętli odczytywac i zapisywac do pliku <hmmm>

jesli chodzi o odczytywanie to jestem zdeczka ciemny....no ale cuż moze sobie poradze. Mogl bys mi jeszcze pomoc jak odczytac jeden plik ktory sie znajduje w pliku stworzonym *.img ??. Wpakowalem plik bleble.bmp i probu je go odczytac uzywając Stream.ReadBuffer ale cos nie idzie :( z Stream.Read tez sie bawilem w sumie kicha cieńki bolek jestem :D:D pozdroofka !!!

/// dobra jakos sie uporalem z tym...ale...mam pytanko czy jes mozliwosc zmiany danych array ?? chodzi mi o to:

Bufor: array[1..ile]of Char;

czy moge nadawac dla "ile" rozne wartosci ?? za kazdym wlączeniem procedury aby ona byla inna i rowna aktualnie rozpakowywanemu pliku :-8 :| :| :| pozdrawiam [cya]

0

Udalo mi sie wkoncu cos wykombinowac :-) dzieki za pomoc [browar] kodzik ktory zymeczylem przedstawiam ponizej...moze sie kiedys komus przyda. Nie jest za genialny ale wazne ze dziala heheh [diabel]

Wykorzystalem 2 komponenty:
OpenDialog o nazwie "Open" (opcja multi-select wlączona)
ListView o nazwie "List"

Ponizej znajduje sie procedurka ktora laduje wybrane pliki do pliku "archiwum.img":

var
S,Pliki:TFileStream;
i:integer;
Item:TlistItem;
begin
S:=TFileStream.Create(ExtractFilePath(Application.ExeName)+'archiwum.img', fmCreate);
Open.Execute;
S.Position:=0;
for i:=0 to Open.Files.Count-1 do
begin
Pliki:=TFileStream.Create(Open.Files.Strings[i], fmOpenRead);
Item:=List.Items.Add;
Item.Caption:=ExtractFileName(Open.Files.Strings[i]);
Item.SubItems.Add(IntToStr(Pliki.Size));
Pliki.Free;
end;
S.WriteComponent(List);
for i:=0 to Open.Files.Count-1 do
begin
Pliki:=TFileStream.Create(Open.Files.Strings[i], fmOpenRead);
Pliki.Position:=0;
S.CopyFrom(Pliki,Pliki.Size);
Pliki.Free;
end;
ShowMessage('Rozmiar pliku: '+IntToStr(S.Size));
S.Free;
end;

a tutaj procedurka ktora rozpakowuje i zapisuje pliki:

var
SS:TFileStream;
S2:TFileStream;
ile,i:integer;
begin
SS:=TFileStream.Create('archiwum.img', fmOpenRead);
SS.Position:=0;
SS.ReadComponent(List);
for i:=0 to List.Items.Count-1 do
begin
S2:=TFileStream.Create(List.Items.Item[i].Caption, fmCreate);
S2.Position:=0;
ile:=StrToInt(List.Items.Item[i].SubItems.Strings[0]);
S2.CopyFrom(SS,ile);
S2.Free;
end;
SS.Free;
end;

pozdrawiam !!!!!!!!!!!!!!!! [browar] [browar] [browar] [browar]

0

Btw w downloadzie są źródła SPK, które takie cuś własnie realizują, może warto byłoby się z nimi zapoznać ciom?

1 użytkowników online, w tym zalogowanych: 0, gości: 1