Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пытаюсь сделать счетчик CGI на Делфи


MDFE ©   (2003-08-09 15:18:00) 

Пытаюсь сделать счетчик на Делфи/CGI.

Задача:
var s:string;

1) Нужно в CGI открыть файл(где цифра посещений) на чтение, считать s, закрыть.
2) s:=IntToStr(StrToInt(s)+1);
3) Открыть файл на запись, записать s, закрыть файл


-------------------------------------------------------------
Делаю 1 пункт, 1 вариант:

procedure TWebModule1.WebModule1WebActionItemAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
f:textfile;
s:string;
begin
s:="0";

AssignFile(f," http://host/logs/Count.dat");
Reset(f); // Ошибка
Readln(f,s);
Close(f);
end;

Ошибка IO 123

try и -I непомогают


-------------------------------------------------------------
Делаю 1 пункт, 2 вариант(из help`a):

procedure TWebModule1.WebModule1WebActionItemAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
s:string;
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer;
begin
s:="0";

iFileHandle := FileOpen(" http://host/logs/Count.dat", fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);

s:=PChar(Buffer);
FreeMem(Buffer);
end;

Ошибок нет, но iBytesRead = -1

Вопрос как считать эту "s"?
Или может кто делал такое, подскажите куда копать.

Проверка CGI идет на ISS

http://host/logs/Count.dat- существует
права - все галочки(Доступ к тексту сценария, чтение, запись, запись в журнал)

Если будут вопросы, задавайте.


MDFE   (2003-08-10 02:22:00) [1]

Набережных С. © (09.08.03 18:32)
Вы полностью правы, еще пришлось побороться(через ошибки) с правами доступа(нехотел открываться на запись).
но все ок. :)


Anatoly Podgoretsky   (2003-08-09 18:46:00) [2]

MDFE © (09.08.03 18:04)
Это уже другое дело, это нормальный путь
А то http:


Набережных С.   (2003-08-09 18:32:00) [3]

Будь выполнен п.1, и вопроса бы, возможно, не возникло. ИМХО, конечно.


MDFE   (2003-08-09 18:04:00) [4]

Anatoly Podgoretsky © (09.08.03 16:11)
понял...т.е. путь берем локально для сервера
AssignFile(f,"./../wwwroot/logs/DownloadCount.dat");
Reset(f);
работает, остальное мелочи.

На этом спасибо.

Набережных С. © (09.08.03 17:02)
1) проверки в этом посте убрал, конечно же ошибки были(имелось введу CGI не загибался, прошу прощения за неточность)
2) взято из help`a D6 "FileOpen, FileSeek, FileRead Example", тупо поверил в написаное.
FileRead пользаваться не приходилось, хватало Read(f
3) описка, имелось в виду s:=String(Buffer);

Благодарю и Вас.


Anatoly Podgoretsky   (2003-08-09 17:10:00) [5]

Ну мелочи я воосе не стал рассматривать, нет смысла если главное не в порядке.


Набережных С.   (2003-08-09 17:02:00) [6]

Плюс к >>Anatoly Podgoretsky © (09.08.03 16:11)<< еще кое-какие мелочи:
1) Откуда известно, что ошибок нет, если нет проверок?
2) Да сколько же можно!
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
3) Ради любопытства - на кой ляд вот это:
s:= PChar(Buffer);


Anatoly Podgoretsky   (2003-08-09 16:11:00) [7]

http://host/logs/Count.dat
Такой файл не может существовать, недопустимые символы в имени файла


Наверх

Титульная страница Поиск, карта сайта Написать письмо