ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

25.08.2009, 17:22
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Сообщение от 2pick
Сообщение от 2pick
Глюк при чтении файла... Текстовые файлы читает наура, а вот двоичные (картинки, архивы и т.п.) только первые 5-10 байт. Где косяк?
Код:
Function GetBuff(szFile: PChar): PChar;
Var
hFile, dwSize, dwBytes: DWORD;
Begin
Result:='';
hFile:=CreateFile(szFile, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
If hFile<>INVALID_HANDLE_VALUE then
Begin
dwSize:=GetFileSize(hFile, nil);
Result:=VirtualAlloc(nil, dwSize, MEM_COMMIT, PAGE_READWRITE);
ReadFile(hFile, Result^, dwSize, dwBytes, nil);
End;
CloseHandle(hFile);
End;
Кто-то поможет все таки? 
Присоеденяюсь. Тоже очень интересен ответ.
|
|
|

25.08.2009, 17:56
|
|
Познающий
Регистрация: 31.05.2009
Сообщений: 68
Провел на форуме: 1271980
Репутация:
19
|
|
Подкиньте идею - нужно последовательно считывать по строке из текстового файла используя WinApi. Получается считать сразу весь файл в буфер, а можно ли сделать это именно построчно? Просто разделять вручную массив немного геморно.
Часть кодa:
Код:
const
MAX_BYTES_TO_READ = 65536;
var
hFile: Cardinal;
dw: DWORD;
buf: array of char;
len: integer;
begin
hFile:= CreateFile('file.zip', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
If hFile = -1 then exit;
len:=GetFileSize(hFile, nil);
SetLength(buf, len);
repeat
ReadFile(hFile, buf, MAX_BYTES_TO_READ, dw, nil);
until dw = 0;
CloseHandle(hFile);
|
|
|

26.08.2009, 05:37
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
intNet, Вот из учебника чтение по строчкам и запись в мемо
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile; // файл
fName: String[80]; // имя файла
buf: String[80]; // буфер для чтения из файла
begin
fName := 'C:\test.txt;
AssignFile(f, fName);
{$I-}
Reset(f); // открыть для чтения
{$I+}
if IOResult <> 0 then
begin
MessageDlg('Ошибка доступа к файлу ' + fName,
mtError,[mbOk],0);
exit;
end;
// чтение из файла
while not EOF(f) do
begin
readln(f, buf); // прочитать строку из файла
Memo1.Lines.Add(buf); // добавить строку в поле Memo1
end;
CloseFile(f); // закрыть файл
end;
|
|
|

26.08.2009, 05:53
|
|
Постоянный
Регистрация: 27.10.2008
Сообщений: 380
Провел на форуме: 1249808
Репутация:
149
|
|
Он вроде на WinApi просил
|
|
|

26.08.2009, 09:17
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
2 intNet Вот что значит впадлу встать посмотреть на градусник )
В этом треде я уже кидал функцию чисто на WinAPI для построчного чтения файла.
https://forum.antichat.ru/showpost.php?p=1440018&postcount=4085
Последний раз редактировалось slesh; 26.08.2009 в 09:24..
|
|
|

26.08.2009, 17:56
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Как при событии TForm1.FormClose отменить закрытие формы?
Exit не работает, в гугле по этой теме много мусора
|
|
|

26.08.2009, 17:58
|
|
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
Провел на форуме: 813785
Репутация:
314
|
|
Сообщение от НTL
Как при событии TForm1.FormClose отменить закрытие формы?
Exit не работает, в гугле по этой теме много мусора
В гугле много инфы
Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=False;
end;
еще можно в OnClose прописать:
-
[edited]
Спасибо тому доброму человеку, который поставил мне -20 за этот пост. Чмаке, детка
[/edited]
Последний раз редактировалось s0l_ir0n; 26.08.2009 в 19:12..
|
|
|

26.08.2009, 23:30
|
|
Познающий
Регистрация: 04.11.2007
Сообщений: 51
Провел на форуме: 310791
Репутация:
6
|
|
может кто скинуть пример отправки post запросов через winsock ?
в гугле мало примеров если находил то кривые
|
|
|

26.08.2009, 23:36
|
|
Участник форума
Регистрация: 07.01.2009
Сообщений: 186
Провел на форуме: 1247273
Репутация:
166
|
|
Код:
var
wData:WSAData;
s:TSOCKET;
addr:sockaddr_in;
email,pass,sendbuff:string;
PostData:string;
begin
WSAStartup(makeword(1,1),wData)
s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
FillChar(addr, SizeOf(sockaddr_in), 0);
addr.sin_family:=AF_Inet;
addr.sin_port:=htons(80);
addr.sin_addr.S_addr:=inet_addr('93.186.224.234');
Connect(S,addr,SizeOf(TSockAddr));
PostData := '';
PostData := 'email=' + email+'&'+'pass='+pass ;
sendbuff := '';
sendbuff := 'POST /login.php HTTP/1.1'+ #13#10 +
'Host: vkontakte.ru'+ #13#10 +
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 AdCentriaIM/1.7 Firefox/2.0.0.14 WebMoney Advisor'+ #13#10 +
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'+ #13#10 +
'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'+ #13#10 +
'Accept-Encoding: gzip,deflate'+ #13#10 +
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'+ #13#10 +
'Keep-Alive: 300'+ #13#10 +
'Connection: keep-alive'+ #13#10 +
'Referer: http://vkontakte.ru/index.php'+ #13#10 +
'Cookie: remixchk=5'+ #13#10 +
'Content-Type: application/x-www-form-urlencoded'+ #13#10 +
'Content-Length: ' + IntToStr(Length(PostData)) + #13#10#13#10 + PostData+#13#10+'Connection: close' + #13#10#13#10;
send(s, sendbuff[1] , Length(sendbuff), 0);
application.ProcessMessages;
recv(s,sBuff,5000,0);
application.ProcessMessages;
Shutdown(S,SD_Send));
closesocket(s));
WSACleanUp;
Код честно скомунизжен =)
Последний раз редактировалось ex3me; 27.08.2009 в 20:36..
|
|
|

26.08.2009, 23:43
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
ex3me, мда, вам лишь бы скомуниздить и не проверить сам код
если я был бы новичком то сразу же вопросы стали типа "А что такое Err(Connect(S,addr,SizeOf(TSockAddr))), и почему он не выполняется"
InfectedM, стучи в асю 114400О2, кину пример с коментами
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|