Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > CGI-проЕкт


Автор: brb 11.2.2003, 23:52
Господа, Не найдется ли кто-нибудь, кому будет не лень создать и переслать мне ПОЛНЫЙ CGI-проект.
Постановка:
Код
TEdit *digit1; // первое число
TComboBox *cb1; // 4 действия (+,-,*,/)
TEdit *digit2; // второе число
TButton *result; // типа Enter
TLabel *scr; //результат

Хочу думать, что этот и достаточно примитивный и, в то же время, "большой" проект, послужит мне НАЧАЛЬНЫМ образцом, для входа в интернет программирование.

Спасибо

Автор: Baa 12.2.2003, 00:20
Че-то вообще не понял... как это CGI-проЕкт с визуальными компонентами? :/

Автор: Baa 12.2.2003, 00:23
я недавно выкладывал ссылку на CGI- голосование... писал я его на дельфе, но разницы большой нету... поищи в теме по дельфям... проект достаточно простой, так что поможет не меньше арифметики...

Автор: Vit 12.2.2003, 00:23
На Дельфи пример здесь:
http://forum.vingrad.ru/index.php?act=ST&f=32&t=798


Я С/С++ не знаю, поэтому скажу алгоритм:

1) Находишь хэндл на стандартный поток вывода:
  GetStdHandle(STD_OUTPUT_HANDLE)
2) Открываешь его как файл для записи
3) Пишешь в него специальный заголовок, например для картинки будет:
"Content type: image/x-MS-bmp"+2 переноса строки
4) Дальше пишешь то что тебе нужно.

Это то как делается вручную...

Автор: Vyacheslav 12.2.2003, 00:24
А что, проект из примеров ($BC)\Examples\Webserv не проходит?

Автор: brb 12.2.2003, 00:34
Baa
Цитата
CGI-проЕкт с визуальными компонентами
А что это низзя? Я не знаю.
Vit
Цитата
Пишешь в него специальный заголовок

А где правила по написанию заголовков не только для картинок?

Автор: Vit 12.2.2003, 01:12
text/html
text/plain
text/richtext

image/gif
image/jpeg
image/x-MS-bmp
image/x-xpixmap

video/mpeg
video/quicktime

audio/x-wav
audio/basic (Sun *.au audio files)
audio/mp3
audio/mpeg
audio/x-mp3
audio/x-mpeg
audio/m3u
audio/x-m3u
audio/x-aiff (aif aiff aifc)

application/msword
application/octet-stream (для exe)
application/x-zip
application/mac-binhex40 (hqx)
application/pdf
application/rtf
application/x-latex
application/zip
application/rss+xml


Автор: Step 12.2.2003, 01:25
Цитата
А что это низзя? Я не знаю.
визуальные компонеты возможны только на старице, а скрипт просто обрабатывает значение передаваемые ему и формирует ответ.

Автор: brb 12.2.2003, 03:39
Спасибо всем, мои познания умножились многократно,но все равно ничего не понял(1000 * 0 =...).

Автор: Vit 12.2.2003, 03:59
Скажем так, если в стандартный выходной поток будет сначала послана строка

"Content type: text/plain"+2 переноса строки

то все последующие данные, которые будут посланы в стандартный поток вывода, браузером будут интерпретированны как обычный текст. например если твой CGI посылает

"Content type: text/plain"+2 переноса строки+"Hello!"

то, в ответ на клик по линку на CGI в браузере появится надпись "Hello!" шрифтом и размером по умолчанию.

Если пошлёшь

"Content type: text/html"+2 переноса строки

то браузер будет от тебя ожидать вывода чего то типа

"<html><body><a href='http://www.delphist.com'>Click here</a></body></html>"

Автор: Vit 12.2.2003, 04:14
Вот простейший пример CGI с использованием CGI проекта (среда Builder):

http://files.vingrad.ru/vit/CGITest.zip

Автор: Vaulter 13.2.2003, 05:44
народ, есть
Код
#include <windows.h>
HANDLE con;
DWORD Out(LPSTR what);
void main()
{
con=GetStdHandle(STD_OUTPUT_HANDLE);
Out("Content-Type: text/html \n\n");
Out("<html><head><title>sample</title>\n");
   Out("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">\n>");
Out("</head><body>Sample</body></html>");
}
DWORD Out(LPSTR what)
{
DWORD writed;
WriteConsole(con,what,lstrlen(what),&writed,0);
return writed;
}



компилю в cgi как консольный проект, причем без флага WIN32
кидаю на сервак - ноль.
помогите начать.

Автор: Baa 13.2.2003, 17:42
Низя WriteConsole...
Код

#include <windows.h>
HANDLE con;
DWORD Out(LPSTR what);
void main()
{
con=GetStdHandle(STD_OUTPUT_HANDLE);
Out("Content-Type: text/html \n\n");
Out("<html><head><title>sample</title>\n");
Out("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">\n");
Out("</head><body>Sample</body></html>");
CloseHandle (con);
}
DWORD Out(LPSTR what)
{
DWORD writed;
WriteFile (con, what, lstrlen(what),&writed,0);
return writed;
}

Автор: dim 13.2.2003, 21:23
А проще printf() smile.gif

Автор: brb 13.2.2003, 22:29
Извините,
Цитата
Out("<html><head><title>sample</title>\n");
Цитата
Out("</head><body>Sample</body></html>");

а что такое сампл?

Автор: Vit 14.2.2003, 00:07
Цитата(brb @ 13.2.2003, 13:29)
а что такое сампл?

В данном случае простой текст, который будет виден в браузере, можешь поставить на его место что угодно...

Автор: brb 14.2.2003, 01:38
а как там делаются кнопки, чек-боксы и прочая [CENSORED]?

Автор: dim 14.2.2003, 02:12
C помощью HTML

Автор: Vaulter 14.2.2003, 04:07
Vitа открывать консоль перед WriteFile не надо?

Автор: Vaulter 14.2.2003, 10:39
и через WriteFile не пашет sad.gif

Автор: Baa 14.2.2003, 17:26
vaulter у меня отлично пашет... сервер Apache.

Автор: Vaulter 15.2.2003, 00:00
Baa в чем компилил и с какими ключами?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)