В строках 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 секундыСпасибо Qu1nt'у за помощь в решение проблемы. Нужно все read, заменить на readln =) Это сообщение отредактировал(а) BuShaRt - 20.9.2009, 00:55
|