Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];

Вниз

Как защитить переменные в потоке?   Найти похожие ветки 

 
Aleksandr   (2002-03-21 16:47) [14]

Продолжение:


{ TWebDataProcessor }
function TWebDataProcessor.SendFile(AFileName: string): boolean;
var
R : TRiHeader;
F : TFileStream;
s : string;
begin
Result:=false;
R:=nil;
try
R:=TRIHeader(GetFromFileStream(AFileName));
F:=nil;
if FileExists(R.TransName) then begin
FClient.Writeln(ExtractFileName(R.TransName));
s:=FClient.ReadLn;
if s=rsFileName then try
F:=TFileStream.Create(R.TransName,fmOpenRead OR fmShareDenyNone);
FClient.Writeln(IntToStr(F.Size));
s:=FClient.Readln;
if s=rsFileSize then begin
FClient.WriteStream(F);
s:=FClient.ReadLn;
if s=rsFileData then
Result:=true
else
AddLog("Error file data ok - "+R.TransName)
end
else
AddLog("Error file size ok - "+R.TransName)
finally
F.Free
end
else
AddLog("Error file name ok - "+R.TransName)
end
else
AddLog("File Not found - "+R.TransName)
finally
if Result then begin
DeleteFile(R.TransName);
DeleteFile(AFileName)
end
else if FBadDir<>"" then begin
DeleteFile(AFileName);
{$IFNDEF Remote}
MoveFileWithUnicName(R.TransName,FBadDir+ExtractFileName(R.TransName))
{$ENDIF}
end;
R.Free
end
end;

constructor TWebDataProcessor.Create;
begin
inherited Create(true);
FreeOnTerminate:=false;
FSleepInterval:=ASleepInterval;
FDir:=ADir;
FClient:=TIdTCPClient.Create(nil);
FClient.Port:=APort;
FClient.Host:=AHost;
FLogFileName:=CorrectPath(LogFilesDir)+WebStmLogFileName;
if FileExists(FLogFileName) then begin
FLogFile:=TFileStream.Create(FLogFileName,fmOpenReadWrite or fmShareDenyNone);
if FLogFile.Size>30000 then begin
FLogFile.Free;
FLogFile:=TFileStream.Create(FLogFileName,fmCreate);
end;
FLogFile.Free
end
else begin
FLogFile:=TFileStream.Create(FLogFileName,fmCreate);
FLogFile.Free
end;
FLogFile:=TFileStream.Create(FLogFileName,fmOpenReadWrite or fmShareDenyNone);
FLogFile.Seek(0,soFromEnd);
InitializeCriticalSection(WebSection1);
InitializeCriticalSection(FileSection1);
if NOT ASuspensed then
Resume
end;

procedure TWebDataProcessor.AddLog(Msg: string);
var
s : string;
P : Pointer;
begin
if NOT Assigned(FLogFile) then
Exit;
try
EnterCriticalSection(FileSection1);
if FLogFile.Size>30000 then begin
FlogFile.Free;
FLogFile:=TFileStream.Create(FLogFileName,fmCreate);
FLogFile.Free;
FLogFile:=TFileStream.Create(FLogFileName,fmOpenReadWrite or fmShareDenyNone)
end;
S:=DateTimeToStr(Now)+": "+Msg+#13#10;
P:=Pointer(s);
FLogFile.WriteBuffer(P^,length(S))
finally
LeaveCriticalSection(FileSection1)
end
end;

procedure TWebDataProcessor.Execute;
var
HeadersList : TList;
FData : PWin32FindData;
i : integer;
s : string;
begin
Sleep(0);
try
Repeat
HeadersList:=TList.Create;
if SearchFiles32(HeadersList,FDir+HeadersMask) then try
AddLog("Found file(s) to send - "+IntToStr(HeadersList.Count));
EnterCriticalSection(WebSection1);
for i:=0 to HeadersList.Count-1 do try
FData:=HeadersList.Items[i];
if NOT FClient.Connected then
FClient.Connect;
AddLog("Connected to remote...");
if FClient.Connected AND FileExists(CorrectPath(FDir)+ExtractFileName(FData.cFileName)) then begin
s:=CorrectPath(FDir)+ExtractFileName(FData.cFileName);
if SendFile(CorrectPath(FDir)+ExtractFileName(FData.cFileName)) then
AddLog("File sending successfully - "+s)
else
AddLog("File cannot sending - "+s)
end
else if NOT FClient.Connected then
AddLog("Connection unavailable");
if FClient.Connected then begin
AddLog("Disconnected to remote.");
FClient.DisConnect
end;
Dispose(FData);
finally
end
finally
LeaveCriticalSection(WebSection1);
end;
while HeadersList.Count>0 do
HeadersList.Delete(0);
HeadersList.Free;
Sleep(FSleepInterval);
until Terminated
except
on E:Exception do
AddLog("Exception in execute - "+E.Message)
end
end;

destructor TWebDataProcessor.Destroy;
begin
if Assigned(FClient) then
FClient.Free;
DeleteCriticalSection(WebSection1);
DeleteCriticalSection(FileSection1);
inherited
end;

end.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
14-303
Nikolay
2002-02-18 16:39
2002.04.01
Хочу получить за дело! :+)


3-2
Yakudza
2002-03-05 13:27
2002.04.01
Invalid BLOB handle in record buffer


7-328
serg hh
2002-01-03 13:26
2002.04.01
Безопастность NT


1-245
Flagman
2002-03-20 12:43
2002.04.01
TBaseArray


1-247
AlexanderS
2002-03-20 23:31
2002.04.01
Как получить значение переменной окружения TEMP?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский