Dobra, zapodałem już samo wysyłanie plik do wątku. I tak jak myślałem, oraz tak jak pisaliście - rozwiązało to problem zawieszania się programu.
Pozostał jednak drugi błąd, czyli pokazywanie postępu.
Tak więc gwoli wyjaśnienia : plik wysyłam do skryptu php, do którego nie mam dostępu (do kodu), wysyłanie, które teraz odbywa się w wątku wygląda tak :
uses ms;
procedure costam;
var
ResponseStream: TStringStream;
MultiPartFormDataStream: TMsMultiPartFormDataStream;
begin
MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
ResponseStream := TStringStream.Create('');
try
Http.Request.ContentType := MultiPartFormDataStream.RequestContentType;
MultiPartFormDataStream.AddFile('upfile_0yh23',plik,'application/zip');
MultiPartFormDataStream.AddFormField('category','1');
//-------- LISTA KATEGORII -----------------------
for i := 0 to Form1.ComponentCount-1 do
begin
if Form1.Components[i] is TCheckBox then
begin
if TCheckBox(Form1.Components[i]).Checked then
begin
nazwa := TCheckBox(Form1.Components[i]).Name;
Delete(nazwa,1,1);
MultiPartFormDataStream.AddFormField('category',nazwa);
end;
end;
end;
//--------------------------------------------------
MultiPartFormDataStream.AddFormField('textarea',Opis_plik.lines.text);
MultiPartFormDataStream.PrepareStreamForDispatch;
MultiPartFormDataStream.Position := 0;
http.Post(ADRES_STRONY',MultiPartFormDataStream,ResponseStream);
finally
html := ResponseStream.DataString;
MultiPartFormDataStream.Free;
ResponseStream.Free;
end;
Potwierdz.OnClick(sender);
end;
unit ms to sposób na wysyłanie plików do skryptu jaki znalazłem w necie.
Jego zawartość to :
http://www.mm.pl/~sl4sh/ms.txt
Tak więc proszę, powiedzcie mi jak moge pokazać postęp wysyłania pliku na np. progress bar. Bo nie bardzo wiem jak zastosować wskazówke którą podał WIktorDelphi.
// tfuu..... jak zwykle coś głupiego walnąłem
wystarczyło w OnWork w TidHTTP dać
if AWorkMode = wmWrite then //wmWrite - czyli wysyłanie
postep.Position := AWorkCount; //postep - progress bar
oraz przy otwieraniu pliku pobrać jego rozmiar i ustawić jako wartość MAX dla progress bar'a
Dzieki wszystkim za info i pomoc =]