Форум: "Сети";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
ВнизПытаюсь сделать счетчик CGI на Делфи Найти похожие ветки
← →
MDFE (2003-08-09 15:18) [0]Пытаюсь сделать счетчик на Делфи/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 - существует
права - все галочки(Доступ к тексту сценария, чтение, запись, запись в журнал)
Если будут вопросы, задавайте.
← →
Anatoly Podgoretsky (2003-08-09 16:11) [1]http://host/logs/Count.dat
Такой файл не может существовать, недопустимые символы в имени файла
← →
Набережных С. (2003-08-09 17:02) [2]Плюс к >>Anatoly Podgoretsky © (09.08.03 16:11)<< еще кое-какие мелочи:
1) Откуда известно, что ошибок нет, если нет проверок?
2) Да сколько же можно!
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
3) Ради любопытства - на кой ляд вот это:
s:= PChar(Buffer);
← →
Anatoly Podgoretsky (2003-08-09 17:10) [3]Ну мелочи я воосе не стал рассматривать, нет смысла если главное не в порядке.
← →
MDFE (2003-08-09 18:04) [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);
Благодарю и Вас.
← →
Набережных С. (2003-08-09 18:32) [5]Будь выполнен п.1, и вопроса бы, возможно, не возникло. ИМХО, конечно.
← →
Anatoly Podgoretsky (2003-08-09 18:46) [6]MDFE © (09.08.03 18:04)
Это уже другое дело, это нормальный путь
А то http:
← →
MDFE (2003-08-10 02:22) [7]Набережных С. © (09.08.03 18:32)
Вы полностью правы, еще пришлось побороться(через ошибки) с правами доступа(нехотел открываться на запись).
но все ок. :)
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c