[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    А моё че не работает??? Я вроди проверял ! =\
     
  2. b2mbey

    b2mbey Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Почему работает... Только мне кажеться что твой менее надежный... Сайт же тоже может отказать...
    Спасибо конечно, за идею...
     
  3. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Какой сайт:D
    Я тебе сказал чтоб шлюз пинговал :D
     
  4. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Челы помогите )пишу прогу ReadLn() загинаеться,напишите как через readfile() читать построчно текстовый файл =)
     
  5. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Через апишку построчно нельзя, только блоками. Примерно так:
    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 загинается? Мож сорс покажешь?
     
  6. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Короче мне надо читать построчно файл (что это представляет из себя):
    читает в буфер все символы до #13#10 (конец строки),и так пока не кончиться файл...длинна строки небольшая (не больше 50 символов). ReadLn не подходит т.к мне надо много раз открыть файл на чтение,но если делаю так ошибку выдает.
     
  7. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Файл как я понимаю текстовый? Есть еще логическая функция EOLN, которая возвращает true, если достигнут конец строки. То есть можно вложенным циклом перебрать все строки файла
    Code:
      while not EOF(f) do
        begin
          while not EOLN(f) do
            begin
              read(f,c);
              {...}
            end;
          {...}
        end;
    Но в принципе от readln мало чем отличается.
    одновременно из одной проги чтоль? Или в разных участках кода? Закрываешь файл перед каждым новым открытием?
     
  8. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    То что ты написал толку == 0 я это все знаю,незнал бы неспрашивал :mad: Дела в том что прога может за 1 раз открывать 2 или 3 раза файл ReadLn в этом случае успешно вылетает :(
     
  9. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Ну незнаю, могу еще предложить файловые потоки. Если конечно на Vcl пишешь.
     
  10. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Вот что-то ужасное накидал :)

    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;
     
    1 person likes this.
  11. SNAIPER ShoT

    SNAIPER ShoT Elder - Старейшина

    Joined:
    24 Jun 2007
    Messages:
    48
    Likes Received:
    3
    Reputations:
    0
    а есть в делфи 7 код например такой
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ............ {чтоб при клике машина ушла на перезагрузку??? или такое ни как???} подскажите plz
    end;

    end.
     
  12. FeraS

    FeraS Elder - Старейшина

    Joined:
    19 Jan 2007
    Messages:
    555
    Likes Received:
    420
    Reputations:
    76
    SNAIPER ShoT
    Code:
    ExitWindowsEx(EWX_REBOOT+EWX_FORCE, 0);
     
    1 person likes this.
  13. SNAIPER ShoT

    SNAIPER ShoT Elder - Старейшина

    Joined:
    24 Jun 2007
    Messages:
    48
    Likes Received:
    3
    Reputations:
    0
    ТЫ прям ВОЛШЕБНИК!!! СПС =)!!!
     
  14. b2mbey

    b2mbey Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Гы-гы... Ну не так выразился... Звиняй... :D
     
  15. Exile1985

    Exile1985 Elder - Старейшина

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1

    может я тя не правильно понял но.. мож так

    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;
    и не надо парится с доступом к файлу
     
  16. t04

    t04 Elder - Старейшина

    Joined:
    10 Jan 2007
    Messages:
    137
    Likes Received:
    40
    Reputations:
    8
    перевожу исходник с си на делфи, не могу понять где ошибка в коде.

    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;
     
  17. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Да вот то,что надо работает как часы :)
     
  18. da_ff

    da_ff Elder - Старейшина

    Joined:
    11 Jul 2006
    Messages:
    118
    Likes Received:
    22
    Reputations:
    26
    =) в функцию ServAccept передается указатель на сокет а не сам сокет просто его еще надо разименовать перед использованием в accept
     
  19. SNAIPER ShoT

    SNAIPER ShoT Elder - Старейшина

    Joined:
    24 Jun 2007
    Messages:
    48
    Likes Received:
    3
    Reputations:
    0
    А как тама в дэлфи 7 зделать??? Например ты в фарме установил размер окна на котором приложене всегда будет открыто!!! ТО ЕСТЬ ЧТО б его не могли раздвинуть по монетору уже в *.exe файле!!! Подскажите пожалуйсста!!! :confused:
     
  20. Пчел

    Пчел Member

    Joined:
    17 May 2007
    Messages:
    6
    Likes Received:
    7
    Reputations:
    0
    Свойство формы BorderStyle, поставь в bsSingle
     
Thread Status:
Not open for further replies.