![]() |
|
|
Курсовая работа: Багатокритеріальна задача лінійного програмування… <стовпm>=<am1>*<ряд1> + <am2>*<ряд2> +… + <amn>*<рядn>; І підраховує значення, якщо можливо: <стовп1>=<значення1>; … <стовпm>=<значенняm>} Var CurRowN, CurColN: Integer; ValueAvail: Boolean; CurVal:TWorkFloat; st2: String; NotEqual, NoRoots: Boolean; Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_ResultIs+sc_DoubleSpot); NoRoots:=False; For CurRowN:=0 to Length (Self. CurHeadCol) – 1 do Begin st2:=''; ValueAvail:=True; CurVal:=0; If Self. CurOutConsole<>Nil then Begin {<стовп i>=…:} If Self. CurHeadCol[CurRowN].ElmType=bc_Number then st2:=st2+FloatToStr (Self. CurHeadCol[CurRowN].AsNumber) Else st2:=st2+Self. CurHeadCol[CurRowN].AsVarName; st1:=st2; st1:=st1+sc_Space+sc_Equal+sc_Space; {=} End; For CurColN:=0 to Length (Self. CurHeadRow) – 1 do Begin {(aij*:) If Self. CurOutConsole<>Nil then st1:=st1+sc_BrOp+FloatToStr (Self. CurTable [CurRowN, CurColN])+sc_Mul; {рядj:} If Self. CurHeadRow[CurColN].ElmType=bc_Number then Begin If Self. CurOutConsole<>Nil then st1:=st1+FloatToStr (Self. CurHeadRow[CurColN].AsNumber); If ValueAvail then CurVal:=CurVal + Self. CurTable [CurRowN, CurColN]*Self. CurHeadRow[CurColN].AsNumber; End Else Begin If Self. CurOutConsole<>Nil then st1:=st1+Self. CurHeadRow[CurColN].AsVarName; ValueAvail:=False; End; If Self. CurOutConsole<>Nil then Begin st1:=st1+sc_BrCl; {)} If CurColN<>(Length (Self. CurHeadRow) – 1) then st1:=st1+sc_Space+sc_Plus+sc_Space {+} Else st1:=st1+sc_KrKm; {;} End; End; If Self. CurOutConsole<>Nil then Begin Self. CurOutConsole. Lines. Add(st1); st1:=st2; End; If ValueAvail then Begin NotEqual:=False; If Self. CurHeadCol[CurRowN].ElmType=bc_Number then Begin If Self. CurHeadCol[CurRowN].AsNumber<>CurVal then Begin NoRoots:=True; NotEqual:=True; End; End; If Self. CurOutConsole<>Nil then Begin If NotEqual then st1:=st1+sc_Space+sc_NotEqual+sc_Space {<>} Else st1:=st1+sc_Space+sc_Equal+sc_Space; {=} st1:=st1+FloatToStr(CurVal)+sc_KrKm; {<стовп i><V><значення>;} End; End Else Begin If Self. CurOutConsole<>Nil then st1:=st1+sc_Space+sc_ValNotAvail; Self. WasManyRoots:=True; End; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(st1); End; If NoRoots then Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_NoRoots); Self. WasManyRoots:=False; End Else if Not (Self. WasManyRoots) then Self. SolWasFound:=True; Self. WasNoRoots:=NoRoots; End; Label LStopLabel; Begin If Self. TaskWidth<=0 then {Якщо таблиця пуста, то задача пуста:} Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName + sc_EmptyTable); SolveEqsWithM1:=False; Exit; End; HeadRowNum:=Self.CHeadRowNum; HeadColNum:=Self.CHeadColNum; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName + sc_StartSolving); CurRowNum:=0; {починаємо з першого рядка} {Проходимо по усіх стовпцях (по усіх змінних), намагаючись брати розв'язувальні комірки по головній діагоналі. Якщо серед таких зустрінеться нуль, спробуємо знайти ненульову комірку нижче, і поміняти рядки нульової з ненульовою, щоб ненульова стала на головній діагоналі:} CurColNum:=0; While (CurColNum<Length (Self. CurHeadRow)) and (CurRowNum<Length (Self. CurHeadCol)) do Begin {Координати розв'язувальної комірки для помітки кольором в екранній таблиці:} Self. CurGridSolveCol:=CurColNum+HeadColNum+bc_LTaskColsBeforeVars; Self. CurGridSolveRow:=CurRowNum+HeadRowNum+bc_LTaskRowsBeforeVars; {Перевіряємо, чи не є поточна комірка нулем, і при потребі шукаємо ненульову:} If Not (Self. SearchNozeroSolveCell (CurRowNum, CurColNum, Length (Self. CurHeadCol) – 1, Length (Self. CurHeadRow) – 1, HeadRowNum, HeadColNum)) then Break; {якщо не знайдено…} If Self. Stop then Goto LStopLabel; WaitForNewStep (HeadColNum, HeadRowNum); {Якщо дано команду перервати розв'язування:} If Self. Stop then Goto LStopLabel; ColDeleted:=False; {Обробляємо таблицю звичайним Жордановим виключенням:} If Not (Self.GI (CurColNum, CurRowNum, Self. CurHeadRow, Self. CurHeadCol, Self. CurTable, ColDeleted, False, True)) then Begin SolveEqsWithM1:=False; Exit; End; {Переходимо до наступного рядка, так як у цьому вже виразили одну із змінних:} Inc(CurRowNum); If Not(ColDeleted) then Inc(CurColNum); End; ShowResultCalc; SolveEqsWithM1:=True; Exit; LStopLabel: If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName + sc_SolvingStopped); SolveEqsWithM1:=False; Exit; End; {Вирішування системи лінійних рівнянь способом 2:} Function TGridFormattingProcs. SolveEqsWithM2: Boolean; {Для таблиці виду: x1 x2 x3… xn 1 0 0 0 … 0} Const sc_CurProcName='SolveEqsWithM2'; Var CurRowNum, CurColNum: Integer; st1: String; HeadRowNum, HeadColNum: Integer; ColDeleted: Boolean; Procedure ShowResultCalc; {Відображає записи значень змінних (у текстовому полі) такого зказка: <стовп1>=<значення1>; … <стовпm>=<значенняm>; та відображає повідомлення про наявність коренів і їх визначеність.} Var CurRowN, CurColN: Integer; CurVal:TWorkFloat; NotEqual, NoRoots, FreeRoots: Boolean; Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_ResultIs+sc_DoubleSpot); NoRoots:=False; For CurRowN:=0 to Length (Self. CurHeadCol) – 1 do Begin If Self. CurOutConsole<>Nil then Begin st1:=''; {<стовп i>=…:} If Self. CurHeadCol[CurRowN].ElmType=bc_Number then st1:=st1+FloatToStr (Self. CurHeadCol[CurRowN].AsNumber) Else st1:=st1+Self. CurHeadCol[CurRowN].AsVarName; End; NotEqual:=False; CurVal:=Self. CurTable [CurRowN, Length (Self. CurHeadRow) – 1]; If Self. CurHeadCol[CurRowN].ElmType=bc_Number then Begin If Self. CurHeadCol[CurRowN].AsNumber<>CurVal then Begin NoRoots:=True; NotEqual:=True; End; End; If Self. CurOutConsole<>Nil then Begin If NotEqual then st1:=st1+sc_Space+sc_NotEqual+sc_Space {<>} Else st1:=st1+sc_Space+sc_Equal+sc_Space; {=} st1:=st1+FloatToStr(CurVal)+sc_KrKm; {<стовп i><V><значення>;} Self. CurOutConsole. Lines. Add(st1); End; End; {For CurRowN:=0 to Length (Self. CurHeadCol) – 1 do…} {Переріряємо, чи залишилися змінні у рядку-заголовку. Якщо так, то корені вільні, і якщо система сумісна, то їх безліч:} FreeRoots:=False; For CurColN:=0 to Length (Self. CurHeadRow) – 1 do Begin If Self. CurHeadRow[CurColN].ElmType<>bc_Number then Begin FreeRoots:=True; Break; End; End; If NoRoots then Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_NoRoots); Self. WasNoRoots:=True; End Else if FreeRoots then Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_ManyRoots); Self. WasManyRoots:=True; End Else Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_SolutionFound); Self. SolWasFound:=True; End; End; Label LStopLabel; Begin If Self. TaskWidth<=0 then {Якщо таблиця пуста, то задача пуста:} Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName + sc_EmptyTable); SolveEqsWithM2:=False; Exit; End; HeadRowNum:=Self.CHeadRowNum; HeadColNum:=Self.CHeadColNum; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName + sc_StartSolving); CurRowNum:=0; {починаємо з першого рядка} {Проходимо по усіх стовпцях (по усіх змінних), намагаючись брати розв'язувальні комірки по головній діагоналі. Якщо серед таких зустрінеться нуль, спробуємо знайти ненульову комірку нижче, і поміняти рядки нульової з ненульовою, щоб ненульова стала на головній діагоналі. При цьому останній стовпець не беремо (у ньому вільні члени – праві частини рівнянь):} CurColNum:=0; While (CurColNum<(Length (Self. CurHeadRow) – 1)) and {останній стовпець не беремо} (CurRowNum<Length (Self. CurHeadCol)) do Begin {Координати розв'язувальної комірки для помітки кольором в екранній таблиці:} Self. CurGridSolveCol:=CurColNum+HeadColNum+bc_LTaskColsBeforeVars; Self. CurGridSolveRow:=CurRowNum+HeadRowNum+bc_LTaskRowsBeforeVars; {Перевіряємо, чи не є поточна комірка нулем, і при потребі шукаємо ненульову серед коефіцієнтів, окрім стовпця вільних членів (що є останнім):} If Not (Self. SearchNozeroSolveCell (CurRowNum, CurColNum, Length (Self. CurHeadCol) – 1, Length (Self. CurHeadRow) – 2, HeadRowNum, HeadColNum)) then Break; {якщо не знайдено…} If Self. Stop then Goto LStopLabel; WaitForNewStep (HeadColNum, HeadRowNum); {Якщо дано команду перервати розв'язування:} If Self. Stop then Goto LStopLabel; ColDeleted:=False; {Обробляємо таблицю звичайним Жордановим виключенням:} If Not (Self.GI (CurColNum, CurRowNum, Self. CurHeadRow, Self. CurHeadCol, Self. CurTable, ColDeleted, False, True)) then Begin SolveEqsWithM2:=False; Exit; End; {Переходимо до наступного рядка, так як у цьому вже виразили одну із змінних:} Inc(CurRowNum); If Not(ColDeleted) then Inc(CurColNum); End; ShowResultCalc; SolveEqsWithM2:=True; Exit; LStopLabel: If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName + sc_SolvingStopped); SolveEqsWithM2:=False; Exit; End; {Запускач вирішування. Працює у режимах fs_SolvingEqsM1, fs_SolvingEqsM2, fs_SolvingLTask:} Function TGridFormattingProcs. Solve (ToGoToEnd: Boolean=False):Boolean; Const sc_CurProcName='Solve'; Var Res1: Boolean; st1: String; Begin Self. InSolving:=True; Self. WasNoRoots:=False; Self. WasManyRoots:=False; Self. SolWasFound:=False; Self. Stop:=False; Self. GoToEnd:=ToGoToEnd; Res1:=False; Case Self. CurFormatState of fs_SolvingEqsM1: Res1:=Self. SolveEqsWithM1; fs_SolvingEqsM2: Res1:=Self. SolveEqsWithM2; fs_SolvingLTask: Res1:=Self. SolveMultiCritLTask; Else Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName + sc_NoSolveMode); End; End; If Self. CurOutConsole<>Nil then Begin st1:='Вирішування закінчено.'; If Res1 then st1:=st1+' Успішно.' else st1:=st1+' З помилками' + sc_TriSpot; Self. CurOutConsole. Lines. Add(st1); End; Self. InSolving:=False; {Відображаємо таблицю вкінці вирішування:} Self. WriteTableToGrid (Self.CHeadColNum, Self.CHeadRowNum, True); Solve:=Res1; End; Constructor TGridFormattingProcs. Create; Begin Inherited Create; InSolving:=False; SolWasFound:=False; WasNoRoots:=False; WasManyRoots:=False; EqM1TaskPrepared:=False; EqM2TaskPrepared:=False; LTaskPrepared:=False; Continue:=False; GoToEnd:=False; Stop:=False; CurGridModified:=False; CurGridSolveCol:=0; CurGridSolveRow:=0; TableFormatState:=fs_NoFormatting; StringGrid:=Nil; OldOnNewCol:=Nil; OldOnNewRow:=Nil; OldOnDrawCell:=Nil; OldOnDblClick:=Nil; OldOnMouseUp:=Nil; OldOnSetEditText:=Nil; {SetLength (CurHeadRow, 0); SetLength (CurHeadCol, 0); SetLength (CurTable, 0);} Self. CurHeadRow:=Nil; Self. CurHeadCol:=Nil; Self. CurTable:=Nil; Self. CopyHeadRow:=Nil; Self. CopyHeadCol:=Nil; Self. CopyTable:=Nil; CurOutConsole:=Nil; End; Destructor TGridFormattingProcs. Free; Begin {Inherited Free;} {inaccessible value; …raised too many consecutive exceptions: access violation at address 0x00000000 read of address 0x00000000…} End; Function TGridFormattingProcs. GetColorByElmType (CurType:THeadLineElmType):TColor; Const sc_CurProcName='GetColorByElmType'; Var CurColor:TColor; Begin Case CurType of bc_IndependentVar: CurColor:=lwc_IndependentColor; bc_DependentVar: CurColor:=lwc_DependentColor; bc_FuncVal: CurColor:=lwc_HeadColColor; bc_Number: CurColor:=lwc_ValInHeadColOrRowColor; bc_DestFuncToMax: CurColor:=lwc_DestFuncToMaxNameColor; bc_DestFuncToMin: CurColor:=lwc_DestFuncToMinNameColor; bc_OtherType: If Self. CurGrid<>Nil then CurColor:=Self. CurGrid. Color else CurColor:=clWindow; Else Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName+':'+sc_Space+ sc_UnknownVarType+sc_Space+IntToStr (Ord(CurType))+ sc_Space+sc_TriSpot); CurColor:=bc_NotColored; End; End; GetColorByElmType:=CurColor; End; Function TGridFormattingProcs. GetNameByElmType (CurType:THeadLineElmType):String; Const sc_CurProcName='GetNameByElmType'; Var CurName: String; Begin Case CurType of bc_IndependentVar: CurName:=sc_IndependentVar; bc_DependentVar: CurName:=sc_DependentVar; bc_FuncVal: CurName:=sc_InequalFuncName; bc_Number: CurName:=sc_ValInHeadColOrRow; bc_DestFuncToMax: CurName:=sc_DestFuncToMaxName; bc_DestFuncToMin: CurName:=sc_DestFuncToMinName; bc_OtherType: CurName:=sc_OtherType; Else Begin If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add (sc_CurProcName+':'+sc_Space+ sc_UnknownVarType+sc_Space+IntToStr (Ord(CurType))+sc_Space+ sc_TriSpot); CurName:=sc_UnknownVarType; End; End; GetNameByElmType:=CurName; End; Function TGridFormattingProcs. ReadFromFile (Const SPath: String):Boolean; {Читання умови задачі із файла.} Const sc_CurProcName='ReadFromFile'; Var CurFile: File; CurColCount, CurRowCount, CurCol, CurRow, ControlSize: Integer; GotFormatState:TTableFormatState; CurMessage: String; Begin If ((Self. CurFormatState<>fs_EnteringEqs) and (Self. CurFormatState<>fs_EnteringLTask) and (Self. CurFormatState<>fs_NoFormatting) and (Self. CurFormatState<>fs_FreeEdit)) or (Self. InSolving) then Begin CurMessage:=sc_CurProcName+sc_CantReadTaskInCurMode+sc_TriSpot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); ReadFromFile:=False; Exit; End; System. AssignFile (CurFile, SPath); System. FileMode:=fmOpenRead; try {Пробуємо відкрити файл:} System. Reset (CurFile, 1); except CurMessage:=sc_CurProcName+sc_CantOpenFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); ReadFromFile:=False; Exit; End; try {Пробуємо прочитати дескриптори кількості рядків і стовпців у задачі:} System. BlockRead (CurFile, CurColCount, SizeOf(CurColCount)); System. BlockRead (CurFile, CurRowCount, SizeOf(CurRowCount)); Except CurMessage:=sc_CurProcName+sc_EmptyFileOrCantRead+SPath+ sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); ReadFromFile:=False; Exit; End; {Обчислюємо розмір, який повинні займати усі дані у файлі:} ControlSize:=SizeOf(CurColCount)+SizeOf(CurRowCount)+ +SizeOf (Self. CurFormatState)+ SizeOf(TValOrName)*CurColCount+ SizeOf(TValOrName)*CurRowCount+ SizeOf(TWorkFloat)*CurColCount*CurRowCount; {Перевіряємо, чи має файл такий розмір:} If ControlSize<>System. FileSize(CurFile) then Begin CurMessage:=sc_CurProcName+sc_FileNotFullOrHasWrongFormat+SPath+ sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); ReadFromFile:=False; Exit; End; Try System. BlockRead (CurFile, GotFormatState, SizeOf(GotFormatState)); Except CurMessage:=sc_CurProcName+sc_CantReadFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); ReadFromFile:=False; Exit; End; {Встановлюємо режим, що був збережений у файлі разом з умовою задачі:} Self. TableFormatState:=GotFormatState; {Читаємо рядок-заголовок:} SetLength (Self. CurHeadRow, CurColCount); For CurCol:=0 to CurColCount-1 do Begin Try System. BlockRead (CurFile, Self. CurHeadRow[CurCol], SizeOf(TValOrName)); Except CurMessage:=sc_CurProcName+sc_CantReadFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); ReadFromFile:=False; Exit; End; End; {Читаємо стовпець-заголовок:} SetLength (Self. CurHeadCol, CurRowCount); For CurRow:=0 to CurRowCount-1 do Begin Try System. BlockRead (CurFile, Self. CurHeadCol[CurRow], SizeOf(TValOrName)); Except CurMessage:=sc_CurProcName+sc_CantReadFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); ReadFromFile:=False; Exit; End; End; {Читаємо таблицю коефіцієнтів і вільних членів:} SetLength (Self. CurTable, CurRowCount, CurColCount); For CurRow:=0 to CurRowCount-1 do Begin For CurCol:=0 to CurColCount-1 do Begin Try System. BlockRead (CurFile, Self. CurTable [CurRow, CurCol], SizeOf(TWorkFloat)); Except CurMessage:=sc_CurProcName+sc_CantReadFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); ReadFromFile:=False; Exit; End; End; End; Try System. Close(CurFile); Except CurMessage:=sc_CurProcName + sc_CantCloseFile + SPath + sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); End; Self. CurGridModified:=False; Self. Refresh; {Відмічаємо, що прочитана умова задачі не підготована ще до вирішування жодним із методів вирішування:} Self. EqM1TaskPrepared:=False; Self. EqM2TaskPrepared:=False; Self.LTaskPrepared:=False; ReadFromFile:=True; End; Function TGridFormattingProcs. SaveToFile (Const SPath: String):Boolean; {Запис умови задачі у файл.} Const sc_CurProcName='SaveToFile'; Var CurFile: File; CurColCount, CurRowCount, CurCol, CurRow: Integer; CurMessage: String; Begin If ((Self. CurFormatState<>fs_EnteringEqs) and (Self. CurFormatState<>fs_EnteringLTask) and (Self. CurFormatState<>fs_FreeEdit)) or (Self. InSolving) then Begin CurMessage:=sc_CurProcName+sc_CantWriteTaskInCurMode; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); SaveToFile:=False; Exit; End; {Якщо таблиця модифікована, умова не прочитана з неї, то читаємо:} If Self. CurGridModified then Begin If Not (Self. GetTask(True)) then Begin SaveToFile:=False; Exit; End; End; System. AssignFile (CurFile, SPath); System. FileMode:=fmOpenWrite; try {Пробуємо створити новий файл:} System. Rewrite (CurFile, 1); except CurMessage:=sc_CurProcName+sc_CantCreateFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); SaveToFile:=False; Exit; End; Self. GetTaskSizes (CurColCount, CurRowCount); try {Пробуємо прочитати дескриптори кількості рядків і стовпців у задачі:} System. BlockWrite (CurFile, CurColCount, SizeOf(CurColCount)); System. BlockWrite (CurFile, CurRowCount, SizeOf(CurRowCount)); System. BlockWrite (CurFile, Self. CurFormatState, SizeOf (Self. CurFormatState)); Except CurMessage:=sc_CurProcName+sc_CantWriteFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); SaveToFile:=False; Exit; End; {Записуємо рядок-заголовок:} For CurCol:=0 to CurColCount-1 do Begin Try System. BlockWrite (CurFile, Self. CurHeadRow[CurCol], SizeOf(TValOrName)); Except CurMessage:=sc_CurProcName+sc_CantWriteFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); SaveToFile:=False; Exit; End; End; {Записуємо стовпець-заголовок:} For CurRow:=0 to CurRowCount-1 do Begin Try System. BlockWrite (CurFile, Self. CurHeadCol[CurRow], SizeOf(TValOrName)); Except CurMessage:=sc_CurProcName+sc_CantWriteFile+SPath+sc_DoubleQuot; If Self. CurOutConsole<>Nil then Self. CurOutConsole. Lines. Add(CurMessage); MessageDlg (CurMessage, mtError, [mbOk], 0); SaveToFile:=False; Exit; End; End; {Записуємо таблицю коефіцієнтів і вільних членів:} For CurRow:=0 to CurRowCount-1 do Begin For CurCol:=0 to CurColCount-1 do Begin Try System. BlockWrite (CurFile, Self. CurTable [CurRow, CurCol], Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |
|
|||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |