Почему работает... Только мне кажеться что твой менее надежный... Сайт же тоже может отказать... Спасибо конечно, за идею...
Челы помогите )пишу прогу ReadLn() загинаеться,напишите как через readfile() читать построчно текстовый файл =)
Через апишку построчно нельзя, только блоками. Примерно так: Code: var f: hFile; st: _OfStruct; count: Dword; buf: array[0..255] of char; begin fillchar(st,sizeof(st),0); f := OpenFile('c:\1.txt',st,OF_READ); repeat fillchar(buf,sizeof(buf),0); ReadFile(f,buf,sizeof(buf),count,nil); {...операции с блоком данных buf...} until count = 0; CloseHandle(f); А почему с readln загинается? Мож сорс покажешь?
Короче мне надо читать построчно файл (что это представляет из себя): читает в буфер все символы до #13#10 (конец строки),и так пока не кончиться файл...длинна строки небольшая (не больше 50 символов). ReadLn не подходит т.к мне надо много раз открыть файл на чтение,но если делаю так ошибку выдает.
Файл как я понимаю текстовый? Есть еще логическая функция EOLN, которая возвращает true, если достигнут конец строки. То есть можно вложенным циклом перебрать все строки файла Code: while not EOF(f) do begin while not EOLN(f) do begin read(f,c); {...} end; {...} end; Но в принципе от readln мало чем отличается. одновременно из одной проги чтоль? Или в разных участках кода? Закрываешь файл перед каждым новым открытием?
То что ты написал толку == 0 я это все знаю,незнал бы неспрашивал Дела в том что прога может за 1 раз открывать 2 или 3 раза файл ReadLn в этом случае успешно вылетает
Вот что-то ужасное накидал Code: procedure ReadLNFile(filename: string); var f: THandle; count: Dword; buf: array[0..255] of char; s: string; begin s := ''; f:= FileOpen(filename, fmOpenRead or fmShareDenyNone); repeat fillchar(buf, sizeof(buf), 0); count := FileRead(f, buf, 256); s := s + StrPas(buf); while pos(#13#10, s) > 0 do begin messagebox(0,pchar(copy(s,1,pos(#13#10, s))),nil,0); delete(s,1,pos(#13#10, s)); end; until count = 0; FileClose(f); messagebox(0,pchar(s),nil,0); end;
а есть в делфи 7 код например такой procedure TForm1.Button1Click(Sender: TObject); begin ............ {чтоб при клике машина ушла на перезагрузку??? или такое ни как???} подскажите plz end; end.
может я тя не правильно понял но.. мож так Code: procedure TForm1.Button1Click(Sender: TObject); var List:TStringList; i:integer; Source:string; begin List:=TStringList.Create; if OpenDialog1.Execute then List.LoadFromFile(Opendialog1.filename) else exit; for i:=0 to List.count-1 do begin if pos('#13#10',List.Strings[i])> 0 then Source:=List.Strings[i]; delete(Source,pos('#13#10',List.Strings[i]),length(List.Strings[i])); List.strings[i]:=source; end; ......... ......... ........ // тут собственно можешь делать что угодно со //строками List.SaveToFile(OpenDialog1.FileName); List.free; end; и не надо парится с доступом к файлу
перевожу исходник с си на делфи, не могу понять где ошибка в коде. Code: DWORD WINAPI ServAccept(LPVOID lpParam) { struct sockaddr_in ClientAddr; int iSize=sizeof(ClientAddr); SOCKET sConnect; while(true) { if((sConnect=accept(*(SOCKET*)lpParam,(sockaddr*)&ClientAddr,&iSize))==INVALID_SOCKET) break; Connecting((LPVOID)sConnect); // if(CreateThread(0,0,Connecting,(LPVOID)sConnect,0,0)==0) // break; } return 0; } вот на делфи Code: procedure ServAccept(lpParam: pointer); stdcall; var iSize : integer; sConnect : TSOCKET; ClientAddr: PSockAddr; begin iSize:=sizeof(ClientAddr); while true do begin sConnect:=accept(TSOCKET(lpParam),ClientAddr,@iSize); if sConnect = INVALID_SOCKET then break; Connecting(pointer(sConnect)); end; (* if(CreateThread(0,0,Connecting,(LPVOID)sConnect,0,0)==0)*) (* break;*) end;
=) в функцию ServAccept передается указатель на сокет а не сам сокет просто его еще надо разименовать перед использованием в accept
А как тама в дэлфи 7 зделать??? Например ты в фарме установил размер окна на котором приложене всегда будет открыто!!! ТО ЕСТЬ ЧТО б его не могли раздвинуть по монетору уже в *.exe файле!!! Подскажите пожалуйсста!!!