[ 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. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    SENTRY
    Кинь на форму OpenDialog и кнопку.
    В Онклик кнопки пропиши
     
  2. Пуховой

    Joined:
    25 Nov 2007
    Messages:
    46
    Likes Received:
    37
    Reputations:
    0
    А лучше так:

    Code:
    open.execute;
    if open.filename = '' then exit;
    <далее действия с файлом>
     
  3. mobilka

    mobilka Member

    Joined:
    13 Oct 2009
    Messages:
    39
    Likes Received:
    5
    Reputations:
    0
    не работает. вставил на онклик бутон2-
    а в функцию-
    пробовал и наоборот но все равно не пашет
     
    #4403 mobilka, 17 Oct 2009
    Last edited: 17 Oct 2009
  4. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Ап, помогите пожалуйста :)
     
  5. Nullsleep

    Nullsleep Member

    Joined:
    2 Jun 2009
    Messages:
    67
    Likes Received:
    26
    Reputations:
    0
    mobilka, нужно написать так:
    s := SendFile('site.ru', '/get.php', path);
     
  6. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 wolmer
    Hellsp@wn правильно сказал - в HTTP заголовке должно быть поле
    'Connection: Close'+#13#10+#13#10; Оно должно быть вместо Keep-alive (если оно есть)
    Close говорит серваку что после передачи данных он должен закрыть соединение сам.
    Но некоторые серваки этого не понимают и ждут пока клиент сам закроет соединение.
    ЧТобы избежать этого парси HTTP заголовок ответа сервера и там будет поле Content-Lenght и там указано число байт которые вернул сервак. ВОт ты и считывай это кол-во. как тока считал, то сам закрывай соединение.
     
  7. s.p.a.m

    s.p.a.m Banned

    Joined:
    26 Jan 2009
    Messages:
    6
    Likes Received:
    2
    Reputations:
    0
    Как сделать неубиваемый в диспетчере задач процесс?
     
  8. Nullsleep

    Nullsleep Member

    Joined:
    2 Jun 2009
    Messages:
    67
    Likes Received:
    26
    Reputations:
    0
    Если только в диспетчере задач - то юзай системные имена файлов :D

    А вообще лучше делать не неубиваемый, а невидимый процесс.
     
    #4408 Nullsleep, 17 Oct 2009
    Last edited: 17 Oct 2009
  9. Nizhegorodets

    Nizhegorodets Member

    Joined:
    21 Mar 2009
    Messages:
    80
    Likes Received:
    66
    Reputations:
    9
    Язык: Pascal
    есть текстовый файл. в нем столбиком написаны цифры. цифр не больше 80.
    как загнать все эти цифры в массив?
    Пример:
    Берем из текстового документа:
    вот так из текстового файла вытаскиваю...Но как полученные данные в массив загнать???
     
  10. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Nizhegorodets, приблизительно так:
    Code:
    var
      arr: array[1..80] of integer;
      i: integer;
    ...
    assign(input, 'input.txt');
    reset(input);
    i := 1;
    while not eof(input) do
    begin
      readln(arr[i]);
      i := i + 1;
    end;
    closefile(input);
    В Паскале давно уже не писал, может быть немного ошибся.
     
    #4410 Chrome~, 17 Oct 2009
    Last edited: 17 Oct 2009
    1 person likes this.
  11. Nullsleep

    Nullsleep Member

    Joined:
    2 Jun 2009
    Messages:
    67
    Likes Received:
    26
    Reputations:
    0
    Code:
    var
       input: Text;
       a: array[1..80] of Integer;
       n, i: Integer;
    begin
         Assign(input, 'input.txt');
         Reset(input);
         i := 0;
         while not Eof(input) do
         begin
              i := i+1;
              Read(input, a[i]);
         end;
         Close(input);
    end.
    
     
    1 person likes this.
  12. iguigor

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

    Joined:
    9 Jan 2008
    Messages:
    0
    Likes Received:
    35
    Reputations:
    0
    А делфи и паскаль не особо отличаються?? И с чего лучше начать? (если считать что не легче учиться, а более выгодно писать проги) И какие книгы вы бы посоветовали.
    Лучше в пм.
    Заранее спс!
     
  13. BrainDeaD

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

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    особо отличаются. сходство у них в синтаксисе. начинай сразу с делфи. по книгам юзай поиск здесь и в гугле. обсуждалось 1000000 раз.
     
  14. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    К примеру есть файл с большим кол. строк
    Нужно подсчитать кол. строк потоками (threards), как это сделать?

    С потоками как то туго у меня
     
  15. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    тут дело не в потоках, а в скорости считывания с винта + правильности алгоритма считывания строк.
    Простой пример из С++
    функций
    Code:
    ULONG CountLinesInFile(char* name)
    {
    	FILE* file;
    	ULONG ret = 0;
    	char buf[64];
    	
    	file = fopen(name, "rt");
    	if (file)
    	{
    		while (!feof(file))
    		{
    			if (fgets(buf, 64, file)) 
    			{
    				ret++;
    			}
    		}
    		
    		fclose(file);
    	}
    	
    	return ret;
    }
    
    
    пересчитываем спамбазу на 1,7 лямов мыл примерно за 2-3 секунды.
    Если адаптировать для поиска #10 символов в свободно считанных данных, то можно и быстрее ускорить.
    Читать в потоках не советую потому что из-за синхронизации(которую придется тебе делать) ты потеряешь в скорости.
    По этому самый лучшый выход такой:
    Code:
    var
     buf:array[0..1024*64-1];  //типа 64 кила буфер
     len:dword; // кол-во считанных данных
     h:dword;
     cnt : dword;
     x :dword;
    begin
    h := CreateFile(....);
    if h <> $FFFFFFFF then
      begin
        cnt := 0;
        while true do
        begin
          if ReadFile(h,...., len) then
          begin
            for x := 0 to len-1 do if buf[x] = #10 then inc(cnt);
          end else break;
          if len < 1 then break;
        end;
       
        CloseHandle(h)
      end;
    end;
    
    после этого cnt будет = кол-ву строк
     
    #4415 slesh, 18 Oct 2009
    Last edited: 18 Oct 2009
  16. mobilka

    mobilka Member

    Joined:
    13 Oct 2009
    Messages:
    39
    Likes Received:
    5
    Reputations:
    0
    помогите найти ошибку в долбаном коде-
     
  17. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Есть ошибка в этой процедуре:
    Code:
    procedure TForm1.Button2Click(Sender: TObject);
    var
    FStream : TFileStream;
    ProgressBar :TProgressBar;
    i,j,count: integer;
    buf : array[1..40000] of Char;
    begin with OpenDialog1 do if Execute then
    begin
    i:=round(FStream.Size/40000);
    if (i*40000<FStream.Size) then i:=i+1;
    ProgressBar.Max:=i;
    Application.ProcessMessages;
    for j:=1 to i do
    begin
    if i=j then
    count:=FStream.Read(buf,FStream.Size-((i-1)*40000))
    else count:=FStream.Read(buf,length(buf));
    ProgressBar.Position:=j;
    while get_accept=false do Application.ProcessMessages;
    get_accept:=false;
    
    
    Listbox1.Items.Add(opendialog1.FileName);
    FStream:=TFileStream.Create(OPenDialog1.FileName,f mOpenRead);
    Edit2.Text:=IntToStr(Round(FStream.Size/1024))+' êèëîáàéò.';
    FStream.free;
    end;
    end;
    
    end;
    Здесь у тебя в разделе var указан ProgressBar, который в коде должен создаваться. Метод Create. Может быть ты ошибся? ProgressBar, наверное, должен лежать у тебя на форме, а из var его нужно удалить.
     
  18. mobilka

    mobilka Member

    Joined:
    13 Oct 2009
    Messages:
    39
    Likes Received:
    5
    Reputations:
    0
    убрал-
    теперь при компиляции ругается на-
     
  19. mobilka

    mobilka Member

    Joined:
    13 Oct 2009
    Messages:
    39
    Likes Received:
    5
    Reputations:
    0
    исправил. теперь компилируется но при нажатии button1 выскакивает ошибка и подчеркивается строка -
     
  20. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Текст ошибки напиши.
     
Thread Status:
Not open for further replies.