Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.07.2010, 02:43
hugolom hugolom вне форума
Новичок
 
Регистрация: 25.04.2010
Сообщения: 99
Репутация: 9
Вопрос Загрузчик картинок (пост)

Решил написать загрузчик картинок для сайта hostingkartinok.com

Собственно код

Код:
1
2
3
var
  Form1: TForm1;
     bas:TStringList;

Код:
1
2
3
4
5
6
7
8
9
var
gt:string;
begin
bas:= TStringList.Create;
bas.Add('multipart/form-data');
bas.Add('name='+edit1.text);
bas.Add('type='+edit2.text);
bas.Add('value="Загрузить"');
gt:=form1.IdHTTP1.Post('http://hostingkartinok.com/',bas);


Надо чтоб после загрузки избражения появлялась его ссылка в едите(мемо ),
Но как это реализовать незнаю..
Подскажите как , если что подправьте где нитак

ЗЫ. с сетью начал работать недавно так что не пинайте
Ответить с цитированием
  #2  
Старый 29.07.2010, 03:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

В ответ на твой запрос ты получишь страничку, где будет указан адрес загруженных картинок. Тебе надо будет ее распарсить (например, с помощью MSHTML) и получить из соотв. тега этот адрес.
Ответить с цитированием
  #3  
Старый 29.07.2010, 16:14
hugolom hugolom вне форума
Новичок
 
Регистрация: 25.04.2010
Сообщения: 99
Репутация: 9
По умолчанию

Вроде так тег?
Код:
1
<a href='http://_____'><


Но я не пойму как выбрать тект между ними в едит(мемо)?

можете подсказать как выдрать?
Ответить с цитированием
  #4  
Старый 29.07.2010, 17:00
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

сперва две функции:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function GetBefore(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,1,pos(substr,str)-1)
else
  result:='';
end;
 
function GetAfter(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,pos(substr,str)+length(substr),length(str))
else
  result:='';
end;
А потом:

Код:
1
memo1.lines.text:=GetBefore('"></LABEL></DIV></DIV>',GetAfter('URL</SPAN><INPUT type="text" size="92" onclick="this.select();" value="', ПЕРЕМЕННАЯ С ТЕКСТОМ СТРАНИЦЫ)
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #5  
Старый 29.07.2010, 17:37
hugolom hugolom вне форума
Новичок
 
Регистрация: 25.04.2010
Сообщения: 99
Репутация: 9
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
procedure host1;
function GetBefore(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,1,pos(substr,str)-1)
else
  result:='';
end;
 
function GetAfter(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,pos(substr,str)+length(substr),length(str))
else
  result:='';
end;
begin
memo1.lines.text:=GetBefore('"></LABEL></DIV></DIV>',GetAfter('URL</SPAN><INPUT type="text" size="92" onclick="this.select();" value="', ПЕРЕМЕННАЯ С ТЕКСТОМ СТРАНИЦЫ)  //это строка ошибка говорит
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
gt:string;
begin
bas:= TStringList.Create;
bas.Add('multipart/form-data');
bas.Add('name='+edit1.text);
bas.Add('type='+edit2.text);
bas.Add('value="Загрузить"');
gt:=form1.IdHTTP1.Post('http://hostingkartinok.com/',bas);
host1;
 
end;
 
end.


В чем я ошибся? и как решить?
Ответить с цитированием
  #6  
Старый 29.07.2010, 17:39
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

OMG WTF
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function GetBefore(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,1,pos(substr,str)-1)
else
  result:='';
end;
 
function GetAfter(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,pos(substr,str)+length(substr),length(str))
else
  result:='';
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
gt:string;
begin
bas:= TStringList.Create;
bas.Add('multipart/form-data');
bas.Add('name='+edit1.text);
bas.Add('type='+edit2.text);
bas.Add('value="Загрузить"');
gt:=form1.IdHTTP1.Post('http://hostingkartinok.com/',bas);
begin
memo1.lines.text:=GetBefore('"></LABEL></DIV></DIV>',GetAfter('URL</SPAN><INPUT type="text" size="92" onclick="this.select();" value="', gt); host1;
 
end;
 
end.
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #7  
Старый 29.07.2010, 20:04
hugolom hugolom вне форума
Новичок
 
Регистрация: 25.04.2010
Сообщения: 99
Репутация: 9
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
   bas:TStringList;
 
implementation
 
{$R *.dfm}
 
 
 
 
 
function GetBefore(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,1,pos(substr,str)-1)
else
  result:='';
end;
 
function GetAfter(substr, str:string):string;
begin
if pos(substr,str)>0 then
  result:=copy(str,pos(substr,str)+length(substr),length(str))
else
  result:='';
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
gt:string;
begin
bas:= TStringList.Create;
bas.Add('multipart/form-data');
bas.Add('name='+edit1.text);
bas.Add('type='+edit2.text);
bas.Add('value="Загрузить"');
gt:=form1.IdHTTP1.Post('http://hostingkartinok.com/',bas);
begin
memo1.lines.text:=GetBefore('"></LABEL></DIV></DIV>',GetAfter('URL</SPAN><INPUT type="text" size="92" onclick="this.select();" value="', gt);
 
end;
 
end.


memo1.lines.text:=GetBefore('"></LABEL></DIV></DIV>',GetAfter('URL</SPAN><INPUT type="text" size="92" onclick="this.select();" value="', gt); // ошибка в чем?
Ответить с цитированием
  #8  
Старый 30.07.2010, 09:14
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

memo1.lines.text:=GetBefore('"></LABEL></DIV></DIV>',GetAfter('URL</SPAN><INPUT type="text" size="92" onclick="this.select();" value="', gt);

А где еще одна закрывающая скобка?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #9  
Старый 30.07.2010, 11:51
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

hugolom, а разве ваш код для загрузки картинки рабочий?
Ответить с цитированием
  #10  
Старый 30.07.2010, 14:17
hugolom hugolom вне форума
Новичок
 
Регистрация: 25.04.2010
Сообщения: 99
Репутация: 9
По умолчанию

Вот смотрю что нет..

Может поможете сделать его рабочим?
Ответить с цитированием
  #11  
Старый 30.07.2010, 14:57
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

1. браузер + сниффер
2. идем на hostingkartinok.com и смотрим какие запросы идут
3. реализуем с помощью idhttp + TIdMultiPartFormDataStream
Ответить с цитированием
  #12  
Старый 30.07.2010, 15:37
hugolom hugolom вне форума
Новичок
 
Регистрация: 25.04.2010
Сообщения: 99
Репутация: 9
По умолчанию

мне нужно без браузера
Ответить с цитированием
  #13  
Старый 30.07.2010, 15:45
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Платите и сделают вам без лишних для вас телодвижений...
Ответить с цитированием
  #14  
Старый 30.07.2010, 16:51
hugolom hugolom вне форума
Новичок
 
Регистрация: 25.04.2010
Сообщения: 99
Репутация: 9
По умолчанию

Если я бы хотел это, то давно вы создал тему в услугах платных.
но мне охото самому научиться, делать это гет\пост запросами!
я думал это будет просто...
Ответить с цитированием
  #15  
Старый 30.07.2010, 17:52
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

товаришь pesi хочет тебе сказать что браузер+снифер нужны для того что бы узнать что и как надо отправлять серверу, а не предлагает тебе поставить в прогу браузер
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025