Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Проблемы с read


Автор: BuShaRt 20.9.2009, 00:49
В строках 39-40 44-45 49-50 не хочет срабатывать Read, в чем может быть дело? Причем если устанавливать тип данных integer, то все работает?
Код

Program lab1;  { Ðàáîòà ñ âàðåàíòíûìè çàïèñÿìè }
{$APPTYPE CONSOLE}
uses
SysUtils, Classes, System;
type {Îïðåäåëåíèå òèïîâ òîâàðîâ ìàãàçèíà}
  hardware = ( hard, processor, powerUnit );  {Æåñòêèé äèñê, ïðîöåññîð, áëîê ïèòàíèÿ}
  hardwareOptions = record
    id        :integer;   {Èäåíòèôèêàöèîííûé íîìåð òîâàðà}
    price     :integer;   {Öåíà}
    case hardwareType : hardware of
      hard:(
        memorySize  :string[50];  {Îáúåì ïàìÿòè}
        speedRead   :string[50]   {Ñêîðîñòü ÷òåíèÿ}
      );
      processor:(
        speed       :string[50];  {×àñòîòà ïðîöåññîðà}
        socketType  :string[50]   {Òèï ñîêåòà}
      );
      powerUnit:(
        volt        :string[50];  {Ïîòðåáëÿåìàÿ ìîùíîñòü}
        cooling     :string[50]   {Óðîâåíü îõëàæäåíèÿ}
      );
    end;

var {Îïðåäåëåíèå ïåðåìåííûõ}

  hardwareGroup : array of hardwareOptions;
  i, actionFlag, hardwareTypeFlag, arrayIndex:integer;

{Ïðîöåäóðà äîáàâëåíèÿ òîâàðà}
procedure addHardware;
begin
  writeln('Hardware type (Hard - 1, Processor - 2, Power unit - 3): '); read(hardwareTypeFlag);
  writeln('Hardware ID: '); read(hardwareGroup[arrayIndex].id);
  writeln('Hardware price: '); read(hardwareGroup[arrayIndex].price);
  case hardwareTypeFlag of
    1: begin
      hardwareGroup[arrayIndex].hardwareType := hard;
      writeln('Hard memory size: '); read(hardwareGroup[arrayIndex].memorySize);
      writeln('Hard speed read: '); read(hardwareGroup[arrayIndex].speedRead);
    end;
    2: begin
      hardwareGroup[arrayIndex].hardwareType := processor;
      writeln('Processor speed: '); read(hardwareGroup[arrayIndex].speed);
      writeln('Processor socket type: '); read(hardwareGroup[arrayIndex].socketType);
    end;
    3: begin
      hardwareGroup[arrayIndex].hardwareType := powerUnit;
      writeln('Power unit volt: '); read(hardwareGroup[arrayIndex].volt);
      writeln('Power unit cooling: '); read(hardwareGroup[arrayIndex].cooling);
    end;
  end;
    arrayIndex := arrayIndex + 1;
    SetLength(hardwareGroup, arrayIndex+1);
end;

{Ïðîöåäóðà âûâîäà òîâàðà}
procedure writeHardware;
begin
  for i:=0 to length(hardwareGroup)-2 do begin
    writeln(
      ' ID: ' + IntToStr(hardwareGroup[i].id) +
      ' Price: ' + IntToStr(hardwareGroup[i].price)
    );
  end;
end;

{Îáðàáîò÷èê âûâîäà ìåíþ}
begin
arrayIndex := 0;
SetLength(hardwareGroup, 1);
repeat
writeln ('Add new record: 1');
writeln ('Exit (no save): 0');
write ('Action: ');
read(actionFlag);
If actionFlag = 1 then addHardware;
writeln ('-----------------------------------------'); writeln;writeln;
writeHardware;
until actionFlag=0;
end.


Добавлено через 10 минут и 53 секунды
Спасибо http://forum.vingrad.ru/users/Qu1nt'у за помощь в решение проблемы.

Нужно все read, заменить на readln =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)