
27.01.2009, 16:14
|
|
Постоянный
Регистрация: 09.11.2006
Сообщений: 639
С нами:
10265091
Репутация:
541
|
|
ShellExecute(hInstance,"open","md.exe","c:\SSS", null,sw_sownormal);
шото в этом роде
|
|
|

27.01.2009, 16:57
|
|
Участник форума
Регистрация: 08.10.2007
Сообщений: 259
С нами:
9785147
Репутация:
137
|
|
LEE_ROY увы непомогает
|
|
|

27.01.2009, 18:02
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
С нами:
10139366
Репутация:
1502
|
|
http://www.delphirus.com/article32.html
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

27.01.2009, 19:43
|
|
Познающий
Регистрация: 31.08.2007
Сообщений: 94
С нами:
9839462
Репутация:
200
|
|
WinExec и ShellExecute немного не то. С их помощью можно выполнять команды DOS (типа rundl32 xx.dl, бла бла ), вызывать процедуры запуска файлов с параметрами. Но для того, чтобы выполнить консольную команду можно создать поток, запускающий консольную программу. Подключаем только уже написанный для этого модуль.
Код:
//Подключаем модуль в Uses
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
StdCtrls, ExtCtrls, ComCtrls, CmdLine;
type
TForm1 = class(TForm)
btnRun: TButton;
btnWrite: TButton;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
procedure DoCommand(_lpcmd:string);
end;
var
Form1: TForm1;
CmdCom :TRedirectThread;
implementation
{$R *.dfm}
procedure TForm1.DoCommand(_lpcmd:string);
var
_data:string;
begin
if CmdCom<>nil then
begin
_data :=_lpcmd+#13#10;
CharToOem(@_data[1],@_data[1]);
CmdCom.WriteData(_data);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CmdCom:= TRedirectThread.Create(true);
CmdCom.RunProgram :='cmd';
CmdCom.Params :='';
CmdCom.FreeOnTerminate := true;
CmdCom.Resume;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if CmdCom<>nil then
CmdCom.Terminate();
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DoCommand('mkdir c:\121'); // задаем командную строку
end;
end.
Модуль CmdLine
|
|
|

27.01.2009, 20:44
|
|
Участник форума
Регистрация: 08.10.2007
Сообщений: 259
С нами:
9785147
Репутация:
137
|
|
Спасибо всем, решение с модулем больше мне подходит
|
|
|

28.01.2009, 01:13
|
|
Познающий
Регистрация: 29.12.2008
Сообщений: 45
С нами:
9140640
Репутация:
1
|
|
progressbar1
Привет всем обьясните пожалуйсто как можно сделать в таком коде чтобы при выборе файла который отправлять работал Progressbar1 никак не пойму как нужно его сюда вставить да ещё чтобы по окончании передачи файла возникало окно типо Файл успешно передан !
procedure TForm1.Button4Click(Sender: TObject);
begin
if OpenDialog1.Execute then idUDPClient1.Send(OpenDialog1.FileName) //выбираем и отправляем файл
end;
end.
|
|
|

28.01.2009, 10:41
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
То, что ты делаешь - это не файл отправляет, а имя файла.
Для того чтобы отправить файл тебе нужно сделать примерно так:
progressbar1.max = размер файла
затем файл блоками читаешь и отправляешь. И в прогрессбар ставишь сколько уже отправил данных
|
|
|

29.01.2009, 07:31
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами:
10018169
Репутация:
1680
|
|
Есть php скрипт:
Код:
<?php
$uploaddir = '/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
print "File is valid, and was successfully uploaded. ";
print "Here's some more debugging info:\n";
print_r($_FILES);
} else {
print "Possible file upload attack! Here's some debugging info:\n";
print "Possible file upload attack! Дополнительная отладочная информация:\n";
print_r($_FILES);
}
print "</pre>";
?>
Он принимает файл POST параметром "userfile" и загружает на сервак.
Собственно вопрос, как в делфи реализовать передачу файла этому скрипту???
Пробовал через IdHttp, не катит. Тут явно что то ещё надо юзать...
|
|
|

29.01.2009, 11:27
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
Тебе нужно самому постоить HTTP запрос. Вид запроса для отсылки файла примерно такой:
Код:
POST /test.php? HTTP/1.1
Host: site.ru
Content-Length: 185
Content-Type: multipart/form-data; boundary=----------HRMPqBFF7FBJH4xJX2p87i
------------HRMPqBFF7FBJH4xJX2p87i
Content-Disposition: form-data; name="userfile"; filename="myfilename.txt"
Content-Type: text/plain
TEST TEST
------------HRMPqBFF7FBJH4xJX2p87i--
----------HRMPqBFF7FBJH4xJX2p87i - это уникальный разделитель который невстречается в передаваемых данных. ты модешь генерить его сам.
каждая строчка заканчивается на #13#10
В дельфе этот запрос будет строиться примерно так:
1) генери boundary типа ------------HRMPqBFF7FBJH4xJX2p87i
2) data:=boundary+#13#10+'Content-Disposition: form-data; name="userfile"; filename="'+filename+'"'+#13#10+'Content-Type: text/plain'+#13#10#13#10+filedata+#13#10#13#10+boundary +'--'+#13#10;
3) pack:='POST /'+script+' HTTP/1.1'#13#10+Host: '+host+#13#10+'Content-Length: '+inttostr(length(data))+#13#10+'Content-Type: multipart/form-data; boundary='+boundary+#13#10#13#10+data;
4) СОединяйся с сервером каких угодно способом и шли ему pack
Последний раз редактировалось slesh; 29.01.2009 в 11:31..
|
|
|

29.01.2009, 14:27
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами:
10018169
Репутация:
1680
|
|
Пасиб, про формирование заголовков и POST запроса на сокэтах и т.д... Ну это понятно.
Хотелось бы через специальный компонент упростить всё это дело, должен же быть какой то компонент отвечающий за пердачу файлов.
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
|
|
|
|