Pliki

0

Cześć !
Mam problem :-) Potrzebuję procedurki, która wytnie z pliku pierwsze lub ostatnie 100 KB, tak żeby plik który miał 4 MB miał 3.9 MB.

--Delphi is THE BEST !!!!

0

Otwierasz plik (np. przez TFileStream) i kopiujesz go do następnego obiektu TFileStream ale zaczynając od 100KB (Seek). O to chodzi?--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Prośba o pomoc do Delphi po polsku. Oceniajcie i dodawajcie komentarze
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18659

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Otwierasz plik (np. przez TFileStream) i kopiujesz go do następnego obiektu TFileStream ale zaczynając od 100KB (Seek). O to chodzi?

Niezupełnie, bo jeśli mam np: 200 MB wolnego miejsca i 190 MB, to nie będzie miejsca na tempy, a mi chodzi o to żeby uciąć plik nie kopiując go do jakiś buforów. --Delphi is THE BEST !!!!

0

x44 napisał:
&gtNiezupełnie, bo jeśli mam np: 200 MB wolnego miejsca i 190 MB, to nie będzie miejsca na tempy, a mi chodzi o to żeby uciąć plik nie kopiując go do jakiś buforów.
&gt
Żeby wyciąć ostanie 100KB:

var
Plik : file of Byte;
begin
AssignFile(Plik, 'c:\q.txt');
Seek(Plik, FileSize(Plik)-100*1024);
Truncate(Plik);
CloseFile(Plik);
end;
--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Prośba o pomoc do Delphi po polsku. Oceniajcie i dodawajcie komentarze
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18659

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

A to, żeby usunąć pierwsze 100KB:

var
Z, D : TFileStream;
Plik : file of Byte;
Buf : array [0..1023] of Byte;
begin
Z := TFileStream.Create('c:\q.txt', fmShareDenyNone or fmOpenRead);
D := TFileStream.Create('c:\q.txt', fmShareDenyNone or fmOpenWrite);
Z.Seek(1001024,soFromBeginning);
while Z.Position &lt Z.Size do
begin
Z.Read(Buf, sizeof(Buf));
D.Write(Buf, sizeof(Buf));
end;
Z.Free;
D.Free;
AssignFile(Plik, 'c:\q.txt');
Reset(Plik);
Seek(Plik, FileSize(Plik)-100
1024);
Truncate(Plik);
CloseFile(Plik);
end;
--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Prośba o pomoc do Delphi po polsku. Oceniajcie i dodawajcie komentarze
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18659

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Dryobates napisał:
A to, żeby usunąć pierwsze 100KB:
&gt
&gtvar
&gt Z, D : TFileStream;
...
&gt CloseFile(Plik);
&gtend;
&gt
&gt

Fajna procedurka ale jeśli mam plik 300MB i 10MB wolnego na dysku to nie działa ;( (wiesza sie koomp).

Ciekawe czy możliwe jest napisanie procedurki działającej równie szybko jak Truncate ale obcinającej początek a nie koniec...--Delphi is THE BEST !!!!

0

x44 napisał:
&gtFajna procedurka ale jeśli mam plik 300MB i 10MB wolnego na dysku to nie działa ;( (wiesza sie koomp).
&gt
hmm... u mnie to nawet bez przycinania plików pada jak mam 10MB wolnego :)--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Prośba o pomoc do Delphi po polsku. Oceniajcie i dodawajcie komentarze
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18659

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

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