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

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    А ты число после этого вводишь-то? :D
     
  2. Nick_Rimer

    Nick_Rimer New Member

    Joined:
    12 May 2008
    Messages:
    19
    Likes Received:
    1
    Reputations:
    0
    Code:
    {$R A.res}
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
      ResW:THandle;
      rs:TResourceStream;
    begin
      ResW:=FindResource(hInstance,'AU',RT_RCDATA);
      if ResW=0 then RaiseLastOSError;
      rs:=TResourceStream.Create(hInstance,'AU',RT_RCDATA);
      Field.Clear;
      Field.LoadRTFFromStream(rs);
    end;
    Field - это компонент TRichView

    в ресурсе A.res "зашит" файл Auni.rtf следующим образом:
    AU RCDATA Auni.rtf

    Программа работает, ошибки не выползают, но поле остается пустым! То есть файл не загрузился...
    Что у меня не так??
    Помогите, чем можете, плиз..
     
  3. alamat

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

    Joined:
    6 Aug 2007
    Messages:
    18
    Likes Received:
    3
    Reputations:
    0
    Code:
    function ExtractRes(ResType, ResName:string): string;
    var
     Htemp,HResInfo,HGlobal: THandle;
    pStr: PCHar;
    Size: Longint;
    Str: String;
    begin
     HResInfo := FindResource(Htemp, PAnsiChar(ResName), PAnsiChar(ResType));
    if HResInfo = 0 then exit;
    HGlobal := LoadResource(Htemp, HResInfo);
    if HGlobal = 0 then exit;
    // size:=SizeOfResource(HTemp, HResInfo); //размер нужен, если строка не нуль-терминированная
    pStr:=LockResource(HGlobal);
    //SetLength(Str, size);
    //Move(pStr^, PChar(Str)^, Size); //для случая не нуль-терминированной строки
    
    Str := pStr; //подразумевается, что в ресурсе хранится нуль-терминированная ANSI-строка
    result:=Str;
    end;

    De-visible:Не забываем теги
    Code:
    [/COLOR][/SIZE]
     
    #1563 alamat, 20 May 2008
    Last edited by a moderator: 20 May 2008
  4. AHTOLLlKA

    AHTOLLlKA Member

    Joined:
    1 Feb 2005
    Messages:
    225
    Likes Received:
    35
    Reputations:
    22
    подскажите как узнать свой радительский процесс ?
    тоесть кто нас запустил..


    ------------------------------
    уже чето намутил )


     
    #1564 AHTOLLlKA, 20 May 2008
    Last edited: 20 May 2008
  5. Hellsp@wn

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

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    Code:
    var
      Info: TProcessBasicInformation;
    ...
    begin
    ZeroMemory(@Info,SizeOf(TProcessBasicInformation));
    d1:=ZwQueryInformationProcess(hProcess,0,@Info,SizeOf(TProcessBasicInformation),nil);
    If (d1 = 0) then
    begin
      d1:=Info.InheritedFromUniqueProcessId;
      // d1 = parent process pid
    end;
    
     
    1 person likes this.
  6. Andres

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

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    Парни помогите решить проблемку с программой, вроде все правильно прописал, а не работает!:(

    Code:
    Program Dialog;                    {расширенный  диалог  —  второй  вариант)
    const
    Question =' What is your name?';
    Rep(y1 =
    'Паскаль — прост, но первый компилятор Паскаля был написан на Паскале';
    Reply21 = 'Вас ждет удивительное путешествие';
    Reply22 = 'сквозь джунгли особенностей и возможностей языка';
    Reply3 =
    'Паскаль — разумный компромисс между желательным и эффективным';
    Reply4 = 'Паскаль академически элегантен';
    var
    Name: string;
    Age: byte;
    begin
    WriteLn(Question);   ReadLn(Name);      {Ввод    имени}    WriteLn('Hello,',
    Name,'!');          {Вывод  приветствия}  WriteLn('How   old   are   you?');
    {Вопрос о возрасте} ReadLn(Age);                     {Ввод возраста}  if  12
    < Age then WriteLn(Reply1 );
    if (12 <= Age) and (Age < 20) then begin
    WriteLn (Reply21);
    WriteLn (Reply22) end;
    if (20 <= Age) and (Age < 40) then WriteLn(Reply3);
    if Age >= 40 then WriteLn(Reply4) end.
    И еще такой вопрос:

    В интернете есть масса исходных кодов программ разных, скопировать и вставить в Турбо Паскаль нельзя, вопрос(?) как залить код программы в турбо паскаль?
    Если допустим программа маленькая, то я и переписать могу, а если большая..лень берет..
    De-visible: Уже не раз говорил, не надо создавать пост два раза подряд!
     
    #1566 Andres, 20 May 2008
    Last edited by a moderator: 20 May 2008
  7. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Открой в текстовике свой проект и копируй туда.
     
  8. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Коментарий закрой в первой строчке }, а не )

    Далее,

    Че за y1
    Code:
    Rep(y1 ='Паскаль — прост, но первый компилятор Паскаля был написан на Паскале';
    
    Должно быть

    Code:
    Reply1 ='Паскаль — прост, но первый компилятор Паскаля был написан на Паскале';
    
    Странные условия
    Code:
    if  12 < Age then WriteLn(Reply1 );   { Вопрос о возрасте}
      if (12 <= Age) and (Age < 20) then begin
    

    Используй отступы для повышения читаемости кода

    Code:
    Program Dialog;                    {расширенный  диалог  —  второй  вариант}
    const
      Question =' What is your name?';
      Reply1 ='Паскаль — прост, но первый компилятор Паскаля был написан на Паскале';
      Reply21 = 'Вас ждет удивительное путешествие';
      Reply22 = 'сквозь джунгли особенностей и возможностей языка';
      Reply3 = 'Паскаль — разумный компромисс между желательным и эффективным';
      Reply4 = 'Паскаль академически элегантен';
    var
      Name: string;
      Age: byte;
    begin
      WriteLn(Question);   
      ReadLn(Name);      {Ввод    имени}   
      WriteLn('Hello,',Name,'!');          
      WriteLn('How   old   are   you?');   {Вывод  приветствия} 
      ReadLn(Age); {Ввод возраста}  
      if  12 < Age then WriteLn(Reply1 );   { Вопрос о возрасте}
      if (12 <= Age) and (Age < 20) then begin
        WriteLn (Reply21);
        WriteLn (Reply22) end;
      if (20 <= Age) and (Age < 40) then WriteLn(Reply3);
      if Age >= 40 then WriteLn(Reply4) 
    end.
    
    Дополнение...

    Лучше использовать конструкцию case, так как
    в ней можно писать вот такие вещи, ниже пример:


    Code:
    program seasons;
    uses CRT;
    var
      n: Integer;
    begin
      clrscr;
      writeln('Введите номер месяца');
      readln(n);
      writeln('Время года');
      writeln('Время года: ');
      case n of 
        1,2,12: writeln('Зима');
        3..5: writeln('Весна');
        6..8: writeln('Лето');
        9..11: writeln('Осень');
      else writeln('номер месяца неверен');
      end;
      readln;
    end.
    
    И еще, скачай какой нибудь профессиональный исходник и возьми пример оформления кода из него.
     
    #1568 0verbreaK, 20 May 2008
    Last edited: 20 May 2008
    1 person likes this.
  9. Nick_Rimer

    Nick_Rimer New Member

    Joined:
    12 May 2008
    Messages:
    19
    Likes Received:
    1
    Reputations:
    0
    я даже знаю, из какой книги эти примеры, ребята! :)

    ладно, это я отвлекся.. мой вопрос к alamat:
    работает ли это, если мой текст в формате Unicod? Вся суть в том, что мне требуется поддержка кодировки Юникод! Без этого у меня и так все прекрасно..

    для этого я использую компонент TRichView.. но загрузить в него файл не выходит..
     
  10. alamat

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

    Joined:
    6 Aug 2007
    Messages:
    18
    Likes Received:
    3
    Reputations:
    0
    поддержки юникода нет.
     
  11. xxxxxxxxxxxxxxx

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

    Joined:
    20 Jan 2008
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    Напишите пожалуйста коменты к этой программе очень надо....
    Code:
    program uses crt; 
    var i,j,n,m,min,k : integer; 
    P : real; 
    t : array [1..100,1..100] of integer; 
    begin 
    clrscr; 
    write('vvedite kol-vo stolbcov = '); 
    readln(m); 
    write('vvedite kol-vo rjadkov = '); 
    readln(n); 
    
    for i:=1 to m do 
    for j:=1 to n do begin 
    write('vvedite t[',i,j,'] znachenie = '); 
    readln(t[i,j]); 
    end; 
    k:=0; 
    for i:=1 to m do 
    for j:=1 to n do 
    if (i<j) and ((i+j)>(n+1)) and (t[i,j]=0) then k:=k+1; 
    writeln ('k=',k); 
    
    min:=t[m-1,1]; 
    for i:=m-1 to m do 
    for j:=1 to n do 
    if t[i,j]<min then min:=t[i,j]; 
    writeln ('min=',min:3); 
    if min<>0 then 
    begin P:=k/min; writeln ('P=',P:3); end 
    else writeln ('Deistvie nevozmojno'); 
    
    readln; 
    end.
     
  12. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    юзай TNT Unicode Controls
     
  13. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Code:
    Ее надо назвать через program [name];
    
    program pr;
    uses crt;  // подключение модуля
    var i,j,n,m,min,k : integer; 
    P : real; 
    t : array [1..100,1..100] of integer; // двумерный массив
    begin 
    clrscr; // очистка экрана для этого собственно и crt
    write('vvedite kol-vo stolbcov = '); // вывод строки
    readln(m); // считываем ввод в  m
    write('vvedite kol-vo rjadkov = '); // вывод строки 
    readln(n); // считываем в n ввод
    
    // цикл от 1..M
    for i:=1 to m do
    // вложенный цикл
    // от 1..N 
    for j:=1 to n do begin 
    write('vvedite t[',i,j,'] znachenie = '); // выводим все что внутри скоб
    readln(t[i,j]);  // считываем в двумерный массив 
    end; 
    k:=0; // K=0
    for i:=1 to m do 
    for j:=1 to n do 
    // проверка I < J и I+J > N+1 и массив t с элементами [i, j] = 0 тогда к K = K+ 1
    if (i<j) and ((i+j)>(n+1)) and (t[i,j]=0) then k:=k+1; 
    writeln ('k=',k);  // вывод K
    min:=t[m-1,1]; // минимальный элемент
    
    for i:=m-1 to m do 
    for j:=1 to n do 
    if t[i,j]<min then min:=t[i,j]; // сравниваем двумерный массив с минимум
    writeln ('min=',min:3); // вывод min с ограничением 3
    if min<>0 then // если min не равен 0
    
    begin P:=k/min; writeln ('P=',P:3); // выводим P с маской 3
    end 
    else writeln ('Deistvie nevozmojno'); // иначе выводим 
    
    readln; // ждем нажатия
    end.
    
    
    
     
    1 person likes this.
  14. Twiddle

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

    Joined:
    6 Sep 2006
    Messages:
    13
    Likes Received:
    9
    Reputations:
    0
    Работаю над новым проектом и вновь понадобились подсказки. (с меня как обычно благодарность, "+", и уважение).
    1. Нужен примерно следущий онклик:
    Нажата кнопка - прогресбар бежит минуту после этого смотрит есть ли файл C:\xxx.txt - если есть то в мемо выводиться его содержание, - если нет то пишиться что файл не найден.
    Пока это все. Заранее спасибо.
     
  15. emik

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

    Joined:
    20 Dec 2007
    Messages:
    57
    Likes Received:
    18
    Reputations:
    2
    я что то непойму причем здесь кодировки? может кто-то обяснить? или вы имеете ввиду отображение руских шрифто в к консоли виндовс? потому как мне кажется английской раскладке всеравно....
     
  16. Nick_Rimer

    Nick_Rimer New Member

    Joined:
    12 May 2008
    Messages:
    19
    Likes Received:
    1
    Reputations:
    0
    для Twiddle

    бегающий прогресс бар делается просто..
    для этого нужен компонент TTimer.. делаешь так, чтобы по событию OnTimer увеличивалась позиция в прогресс баре.. и поставь интервал поменьше.. какой? сам подбери.. если нужно, чтобы грузилось побыстрее, ставь меньше.. если помедленнее - ставь больше..
    по-умолчанию стоит 1000 (1 секунда)..

    ----------
    для desTiny
    что такое TNT Unicode Controls и с чем их едят?? объясните, пожалуйста, подробнее.. у меня проект стоит!.. пока я не разберусь с этой кодировкой, не могу дальше продолжать :(

    ---------
    для emik
    а чего тут неясного? у меня есть текст в кодировке Юникод.. мне нужно отобразить его в программе Делфи.. но делфи7 изначально сам по себе не понимает юникод.. вот и приходится париться с компонентами
     
    #1576 Nick_Rimer, 21 May 2008
    Last edited: 21 May 2008
  17. diznt

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

    Joined:
    31 Jan 2008
    Messages:
    432
    Likes Received:
    164
    Reputations:
    -19
    Народ что такое "массив" и где его используют чаще всего и как он применяеться ?
     
  18. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    посмотри здесь http://www.pascal.hop.ru/cgi-bin/index.pl?0,7

    Code:
    массив 
    var
      mas: array [0..255] of Char; // массив из 256 символов
    
    
    Обращение производится по индексу для одномерного массива
    
      mas[i]; // где i допустим параметр цикла
    
    Для двумерного обращение 
      mas[i, j]; // i, j параметры цикла
    
    Пример:
    
    var
      i, j: Integer;
      max: Integer;
    begin
    
    for i:=0 to 255 do
      for j:=0 to 255 do
      begin
        max:=mas[i,j];
        if mas[i, j] > max then max:=mas[i, j]; 
      end;
    
    
    Используется везде, где необходимо использовать
    операции со строками, в мат. задачах, играх(шашки, шахматы, судоку...).

    Допустим в патчах, где необходимо пропатчить огромное кол-во данных, используется массив опкодов
     
    #1578 0verbreaK, 22 May 2008
    Last edited: 22 May 2008
  19. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    найдется добрый человек который подскажит код наблюдения за реестром, включая в какую ветку, какой ключ, что с ним(и) делают (создаю, изменяют, удаляют), и значение...

    Зарание спасибо ;)
     
    _________________________
  20. cash$$$

    cash$$$ Banned

    Joined:
    6 Jan 2008
    Messages:
    385
    Likes Received:
    246
    Reputations:
    10
    Пpовеpить pеестp
    Code:
    with TRegistry.create do begin
     Rootkey := HKEY_LOCAL_MACHINE;
     OpenKey('SOFTWARE\BORLAND\DATABASE ENGINE', false);
     CFGFile := ReadString('CONFIGFILE01');
     Free;
    end;
     
Thread Status:
Not open for further replies.