SubDirs, FileList, line, TargetFile: TStringList;
m, n: integer;
FileHandle : Integer;
fSize: Integer;
begin
SourceList := TStringList.create;
FileList := TStringList.create;
TargetFile := TStringList.create;
SubDirs := TStringList.create;
createDirsList('b:\html', SubDirs);
if not DirectoryExists('b:\output.html') then
mkdir('b:\output.html');
for m:=0 to SubDirs.count-1 do
begin
FileList.clear;
createFilesList('b:\html\' + SubDirs[m] , '.htm', FileList);
s := 'b:\output.html\' + SubDirs[m];
if not DirectoryExists(s) then
mkdir(s);
for i:=0 to FileList.count-1 do
begin
SourceList.clear;
TargetFile.clear;
FileHandle := FileOpen('b:\html\' + SubDirs[m] + '\' + FileList[i], fmOpenRead);
fSize := FileSeek(FileHandle,0,soFromEnd);
FileSeek(FileHandle,0,soFromBeginning);
setLength(buffer, fSize);
FileRead(FileHandle, buffer , fSize );
setLength(buffer, ansipos('$', buffer ) );
fileclose(FileHandle);
FileHandle := FileOpen(s + '\' + FileList[i], fmOpenWrite);
FileWrite(FileHandle, buffer , fSize );
fileclose(FileHandle);
TargetFile.SaveToFile('b:\output.html\' + SubDirs[m] + '\' + ChangeFileExt(FileList[i], '.html'));
TargetFile.clear;
end; // n loop files
end; // m loop directories
Problematická část:
setLength(buffer, fSize);
FileRead(FileHandle, buffer , fSize );
setLength(buffer, ansipos('$', buffer ) );
buffer je typ string, ale když nedám setLength(buffer, fSize); tak se nic nenačte do bufferu. Když použiju seLenght tak přes kukátko vidí, že tam jsou načtené nějaké čísla, ale zdrojový soubor je html stránka, takže text. Takže se ptám co musím udělat aby to vidělo text? Já chci v souboru najít značku '$' respektive '$>' a odtud soubor zkrátit.
PS:
Jedná se o jednoúčelový kód, chci jen zkrátit soubory o marast, který je nakonci.