1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Помогите пожалуйста с Turbo Vision! Мне нужно сделать информационно-справочную систему... да не важно... В общем процедура Open не работает! Можете посмотреть, пожалуйста, в чем проблема?
Program name; uses crt,app,objects,menus,drivers,views,StdDlg,DOS; const cmwork=203; cmdos=204; wincoml:tcommandset=[cmsave,cmwork]; type tnotebook=object(tapplication)
Procedure tnotebook.initstatussline; var r:trect; begin getextent®; r.a.y:=pred(r.b.y); statusline:=new(pstatusline, init(r, newstatusdef(0,$FFFF, newstatuskey('~Alt-X~ Exit',kbaltx,cmquit, newstatuskey('~F10~ Close',kbf10,cmclose,nil)),nil))); end;
Procedure FileOpen; var PF:PFileDialog; Control:Word; s:PathStr; begin New(PF,Init('*.dat','Vuberute nuzhnuy file:','Imya fayla',fdOpenButton,0)); Control:=DeskTop.ExecView(PF); case Control of StdDlg.cmFileOpen,cmOk: begin PF.QetFileName(s); end; end; Dispose(PF,Done) end; end;
Procedure FileSave; begin end;
Procedure ChangeDir; begin end;
Procedure DOSCall; begin end;
Procedure Work; begin end;
Procedure TNotebook.HandleEvent(var Event:TEvent); begin Inherited HandleEvent(event); if Event.What=evCommand then case Event.Command of cmOpen:FileOpen; cmSave:FileSave; cmChangeDir:ChangeDir; cmDOSShell:DOSCall; cmWork:Work else exit; end; ClearEvent(Event); end;
{-------------------------------------------------------------------------} var notebook:tnotebook; begin clrscr; notebook.init; notebook.run; notebook.done; end.
1. Если ты работаешь с TVision, то про модуль CRT можешь забыть, он тебе не нужен... Убери его описание из Uses, и clrscr тоже убери... То же самое касается и модуля DOS... 2. Забыл добавить в uses менеждер памяти TVision: модуль Memory, добавь обязательно... 3. Ну, и наконец:
Type TNoteBook = Object(TApplication)
Constructor Init; { <--- Добавляешь } ... Procedure FileOpen; { <--- Добавляешь, это должно быть методом } End;
{ И переписываешь метод FileOpen } Procedure TNotebook.FileOpen; Var R: TRect; FileDialog: PFileDialog; TheFile: FNameStr; Const FDOptions: Word = fdOKButton or fdOpenButton;
Begin TheFile := '*.DAT'; New(FileDialog, Init(TheFile, 'Vuberute nuzhnuy file:', 'Imya fayla', FDOptions, 1)); If ExecuteDialog(FileDialog, @TheFile) <> cmCancel Then Begin R.Assign(0, 0, 75, 20); InsertWindow(New(PEditWindow, Init(R, TheFile, wnNoNumber))); End; End;
Это откроет тебе твой DAT-файл как обычный текстовый... Больше ничем помочь не могу, потому что структуры файла я не знаю...
Вот, дописал, а оно мне пишет: EditorDialog Unknown Identifier
type tnotebook=object(tapplication)
constructor init;
Procedure initmenubar; virtual;
Procedure initstatusline; virtual;
Procedure HandleEvent(var Event:TEvent); virtual;
Procedure initstatussline; virtual;
Procedure FileOpen; end;
Constructor TNoteBook.Init; Begin MaxHeapSize:=8192; EditorDialog:=StdEditorDialog; Inherited Init; end;
Procedure TNotebook.FileOpen; var R:Trect; FileDialog:PFileDialog; TheFile:FNameStr; const FDOptions:Word=fdOKButton or fdOpenButton; begin TheFile:='*.DAT'; New(FileDialog,Init(TheFile,'Vuberute nuzhnuy file:','Imya fayla',FDOptions,1)); If ExecuteDialog(FileDialog,@TheFile)<>cmCancel then begin R.Assign(0,0,75,20); InsertWindow(New(PEditWindow, Init(R,TheFile,wnNoNumber))); end; end;
Procedure FileSave; begin end;
Procedure ChangeDir; begin end;
Procedure DOSCall; begin end;
Procedure Work; begin end;
Procedure TNotebook.HandleEvent(var Event:TEvent); begin Inherited HandleEvent(event); if Event.What=evCommand then case Event.Command of cmOpen:FileOpen; cmSave:FileSave; cmChangeDir:ChangeDir; cmDOSShell:DOSCall; cmWork:Work else exit; end; ClearEvent(Event); end;
{-------------------------------------------------------------------------} var notebook:tnotebook; begin notebook.init; notebook.run; notebook.done; end.