[ 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. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    P.S вообщето то, что у тебя в между begin end. - это не инициализация а выпонение функций модуля, они должны вызываться от туда где ты юзаешь этот модуль. А то у тебя получается не подуль а программа в виде модуля
     
  2. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 Nightmarе если не хочешь мучаться с сокетами - юзай стандартные функции из Wininet
     
  3. Si{R}ius

    Si{R}ius Member

    Joined:
    13 Nov 2008
    Messages:
    95
    Likes Received:
    36
    Reputations:
    0
    Проблема в том, что хоть я пишу модуль инициализации, хоть не пишу его, компилятор грит, что нехватает ";", и никак я не могу его откомпилировать.
     
  4. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    если дело на то пошло то обрати внимание:
    1) прототипы функций ты кинул после impementation
    2) прототипы функций содержат параметры передаваемые им, а сами функции (их код) не содержат их.
    3) вызываешь функции без параметров.
    в совокупности этих ппц каких косяков выходит код похожий на
    Code:
    unit unitd;
    Interface
    uses crt;
    type massiv=array[1..100,1..100] of real;
         massiv1=array[1..100] of real;
    
     procedure matri(var a:massiv);
     procedure Matr_Prakt(a:massiv; var koor:massiv1);
     procedure Funkcia(koor:massiv1);
    Implementation
    
    
         procedure matri(var a:massiv);
         var
         i,j:byte;
         function new:real;
         begin
          new:=((2-sqr(i-3))/i)*(j-5.7);
           end;
           begin
           clrscr;
           for i:=1 to 10 do
    	for j:=1 to 10 do
    	 a[i,j]:=new;
    	 for i:=1 to 10 do begin
    	  writeln;
    	   for j:=1 to 10 do
    	    write(a[i,j]:8:2);
    	     end;
    	      readkey;
    	      end;
    
    
    	      procedure Matr_Prakt(a:massiv; var koor:massiv1);
    	      type massiv=array[1..100,1..100] of integer;
    		   massiv1=array[1..500] of integer;
    		   var   q,n,n1,max_stolb:integer;
    		   i,j:byte;
    			  x:massiv1;
    
    
    
    			  begin
    			  i:=1;
    			  max_stolb:=1;
    			  for j:=2 to N do
    			  if a[i,j]>a[i,j-1] then max_stolb:=j;
    
    			  for i:=1 to N do
    			  for j:=1 to N do
    			  koor[i]:=koor[i]+a[i,j]*a[j,max_stolb];
    
    			  write('a(',koor[1]);
    			  for i:=2 to n do
    			  write(',',koor[i]);
    			  write(')');
    			  writeln;
    			  writeln;
    			  readln;
    			  end;
    
    
    			  procedure Funkcia(koor:massiv1);
    			  var U:real;
    			  qwer,a,i,n,chisl,znam:integer;
    			  q1,q2:real;
    
    			  function F(b:real; var a:real):integer;
    
    			  begin
    			  a:=a+b;
    			  end;
    
    			  begin
    			  for i:=1 to n do
    			  if koor[i]<=1 then f(koor[i],q1);
    			  for i:=1 to n do
    			  if koor[i]>1 then f(koor[i],q2);
    
    			  U:=(1+q1)/(2+q2);
    			  writeln(u);
    			  readln;
    			  writeln;
    			  writeln;
    			  end;
    
    			 var
    			 aa:massiv;
    			 bb:massiv1;
    			  begin
    			  matri(aa);
    			  Matr_Prakt(aa,bb);
    			  Funkcia(bb);
    			  end.
    
     
  5. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    p.s. кучу раз описывать типы ненужно, один раз описал и потом юзай их, а у тя одни и теже типы описываются по сто раз
     
  6. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    выход эксепшены))
    ----
    А вообще компоненты для этого использовать не стоит...(для скачки файлов, причем совсем не стоит...)
    И еще мое мнение, скачивать надо в отдельном потоке, почему думаю объяснять не стоит...
    WinSock,WinInet юзайте)..
     
  7. Si{R}ius

    Si{R}ius Member

    Joined:
    13 Nov 2008
    Messages:
    95
    Likes Received:
    36
    Reputations:
    0
    Я все так и сделал, выполняю саму прогу, вызывающую подпрограмму, пишет 49 ошибку "Data segment too large" :mad:
     
  8. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ата ошибка из-за того что ты юзаешь слишком большие типы данных которые в сумме привышают 65кил. Ты посчитай сколько у тебя тратится место на массивы.
    Единственных выход - выделять память под массивы и работать с указателями
     
  9. Lee_fx

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

    Joined:
    27 Sep 2008
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    Доброго времени суток, собственно вопрос - как на дельфях реализовать deskband (когда WMP сворачиваешь, в трее висит) или хотя бы где можно почитать про создание оного, желательно с примером.
     
  10. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    как вариант найти дискриптор таскбара и туда засунуть свой элемент управления.
     
  11. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Вот тут у меня опть проблема :D
    пытаюсь загрузить файл из интернэта по средствам сокетов

    Code:
    var Site : PChar;
       sock : TSocket;
       HostEnt : PHostEnt;
       WSA : TWSAData;
       addr : sockaddr_in;
       sendbuff : String;
       PostData : String;
    
    
      f:TextFile;
      i:integer;
      buf:array[0..255] of char;
    begin
    
    if WSAStartup($0101, WSA) <> 0 then
    Exit;
    sock := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    FillChar(addr, SizeOf(sockaddr_in), 0);
    addr.sin_family := AF_INET;
    addr.sin_port := htons(80);
    Site := 'www.google.ru';
    HostEnt := gethostbyname(Site);
    addr.sin_addr.s_addr := Longint(PLongint(HostEnt^.h_addr_list^)^);
    
    Connect(sock, addr, SizeOf(addr));
    
           sendbuff := '';
           sendbuff := 'GET http://www.google.ru/images/nav_logo3.png  HTTP/1.0' + #13#10 +
                       'User-Agent: Opera/9.10 (Windows NT 5.1; U; ru)' + #13#10 +
                       'Host: www.google.ru' + #13#10 +
                       'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1' + #13#10 +
                       'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8' + #13#10 +
                       'Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1' + #13#10 +
                       'Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0' + #13#10 +
                       'Proxy-Connection: close' + #13#10 +
                       'Referer: http://www.google.ru/images/nav_logo3.png' + #13#10 +
                       'Proxy-Connection: close';
    
           send(sock, sendbuff [1], Length(sendbuff), 0);
              AssignFile(f, 'logo.png');
              Rewrite(f);
    
            repeat
            i := recv(sock, buf, length(buf), 0);
            writeln(f, buf);
            until i <= 0;
           CloseFile(f);
           CloseSocket(sock);
         end;
    
    но в файл добавляется только несколько символов переноса строки и всё, прозреваю что я использую не тот тип данных для записи ответа сервера в файл или вообще не правильно записываю ответ, подскажите как правильно.
     
  12. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    repeat
    i := recv(sock, buf, length(buf), 0);
    writeln(f, buf);
    until i <= 0;
    замени на
    Code:
     repeat
      i := recv(sock, buf, sizeof(255), 0);
     writeln(f, copy(buf,1,i));
     until i <= 0;
    
     
  13. FindeR

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

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    В процессе создания исключений назрел вопрос. А почему, собсно
    Code:
    showmessage(inttostr(strtoint('xc')));
    Выдаёт мессагой '12' ?
    Обнаружил случайно, когда вбивал заведомо нечисловые значения в нужный мне edit.
    зы: нет, это не переменная, точнее, я её не объявлял.


    а, сам понял.
    x в данном случае указывает на то, что дальше будет следовать число в hex
     
    #2793 FindeR, 27 Feb 2009
    Last edited: 27 Feb 2009
  14. cremator (c)

    cremator (c) Elder - Старейшина

    Joined:
    20 Jun 2008
    Messages:
    258
    Likes Received:
    72
    Reputations:
    0
    strtoint('xc') переводит строку в числовое значение! Тебе вообще что надо?
     
  15. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    slesh спасибо, но опять в файл записывает 2 байта, может что не так с запросом?
     
  16. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    ZET36

    не правильный подход в принципе. т.к. recv может вернуть 0, но это не будет ошибкой! просто в данный момент в сокете нет данных. :) так что советую или читать про сокеты, или использовать wininetapi :)

    з.ы. код ужасен:
    и что же запишится в файл? :) понятно что данные из buf, но сколько же их будет? 255 или меньше?
     
    #2796 Hellsp@wn, 27 Feb 2009
    Last edited: 27 Feb 2009
  17. Maxxxtri23

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    Гдето видел в манулах как сделать для нескольких форм "ресурсы", но теперь немогу найти. Тоесть у меня есть главная форма и дочерняя и мне надо допустим в дочерней форме в Edit1 пишешь значение и оно меняется в главной форме в Label1 тоесть как связать компоненты главной формы с дочерней?
     
  18. Maxxxtri23

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    Все вродебы разобрался, кому интересно оказывается нужно было 2 форму прописать в Uses первой и аналогично со 2 формой
     
  19. Uname-A

    Uname-A Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    73
    Likes Received:
    12
    Reputations:
    5
    Есть TМемо
    В нем записано ~ такое:
    12345678@asdasdas
    12356468@ascvxcczs
    12567678@ascxvdas7
    12345678@aszx43543
    Так вот как получить переменную того что до @ и того что после?
    Например как ' + memo1.Lines + ' переменная всей строки.....
     
  20. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66

    pos,copy functions
     
Thread Status:
Not open for further replies.