Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2007, 20:58   #1
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
Восклицание Открытие файла

Как сделать, чтобы текстовый файл открывался программой, написанной на паскале(как блокнот)?
Lexakazanskij вне форума Ответить с цитированием
Старый 20.10.2007, 01:57   #2
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

"как блокнот" - как виндовский блокнот? на паскале никак. В Дельфи можно.

Последний раз редактировалось Maslan; 20.10.2007 в 02:02.
Maslan вне форума Ответить с цитированием
Старый 20.10.2007, 11:45   #3
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
По умолчанию

Ладно, не как блокнот, а как сам паскаль. Когда: ПКМ\открыть с помощью\программа(созданная на паскале). Запускается эта прога и в ней открывается файл.

Сам паскаль так может!
Lexakazanskij вне форума Ответить с цитированием
Старый 20.10.2007, 11:55   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

1. А у тебя сделан запуск паскалевской программы с параметрами? Если нет, то сначала следует осуществить это, а потом уже спрашивать..
2. Всегда в винде было ассоциирование расширений файла с приложениями, а по правой кнопке выдается список программ, которыми можно открывать данные типы файлов. Открываешь любой редактор реестра и мучаешься, мучаешься, мучаешься...
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 20.10.2007, 12:16   #5
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
По умолчанию

ААААА... как сделать запуск с параметрами?
Lexakazanskij вне форума Ответить с цитированием
Старый 20.10.2007, 17:03   #6
Skiff
 
Регистрация: 12.10.2007
Сообщений: 3
По умолчанию

var
s:string;
i:integer;
...
s:=paramStr(i), где i - номер параметра
Skiff вне форума Ответить с цитированием
Старый 20.10.2007, 18:09   #7
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Код:
program Bloknot;
{$M 8192,8192,655360}
{$X+,S-}
uses Dos, Objects, Drivers, Memory, Views, Menus, Dialogs,
  StdDlg, MsgBox, App, Editors;

const
  HeapSize = 32 * (1024 div 16);

const
  cmCalculator = 101;
  cmShowClip   = 102;

type
  PEditorApp = ^TEditorApp;
  TEditorApp = object(TApplication)
    constructor Init;
    procedure HandleEvent(var Event: TEvent); virtual;
    procedure InitMenuBar; virtual;
    procedure InitStatusLine; virtual;
    procedure OutOfMemory; virtual;
  end;

var
  EditorApp: TEditorApp;
  ClipWindow: PEditWindow;

function OpenEditor(FileName: FNameStr; Visible: Boolean): PEditWindow;
var
  P: PWindow;
  R: TRect;
begin
  DeskTop^.GetExtent(R);
  P := New(PEditWindow, Init(R, FileName, wnNoNumber));
  if not Visible then P^.Hide;
  OpenEditor := PEditWindow(Application^.InsertWindow(P));
end;

constructor TEditorApp.Init;
var
  H: Word;
  R: TRect;
  S: String;
begin
  MaxHeapSize := HeapSize;
  inherited Init;
  DisableCommands([cmSave, cmSaveAs, cmCut, cmCopy, cmPaste, cmClear,
    cmUndo, cmFind, cmReplace, cmSearchAgain]);
  EditorDialog := StdEditorDialog;
  ClipWindow := OpenEditor('', False);
  if ClipWindow <> nil then
  begin
    Clipboard := ClipWindow^.Editor;
    Clipboard^.CanUndo := False;
  end;

  if ParamCount<>0
   then
      OpenEditor(ParamStr(1),True);
end;

procedure TEditorApp.HandleEvent(var Event: TEvent);

procedure FileOpen;
var
  FileName: FNameStr;
begin
  FileName := '*.*';
  if ExecuteDialog(New(PFileDialog, Init('*.*', 'Open file',
    '~N~ame', fdOpenButton, 100)), @FileName) <> cmCancel then
    OpenEditor(FileName, True);
end;

procedure FileNew;
begin
  OpenEditor('', True);
end;

procedure ChangeDir;
begin
  ExecuteDialog(New(PChDirDialog, Init(cdNormal, 0)), nil);
end;

procedure ShowClip;
begin
  ClipWindow^.Select;
  ClipWindow^.Show;
end;


begin
  inherited HandleEvent(Event);
  case Event.What of
    evCommand:
      case Event.Command of
        cmOpen: FileOpen;
        cmNew: FileNew;
        cmChangeDir: ChangeDir;
        cmShowClip: ShowClip;
      else
        Exit;
      end;
  else
    Exit;
  end;
  ClearEvent(Event);
end;

procedure TEditorApp.InitMenuBar;
var
  R: TRect;
begin
  GetExtent(R);
  R.B.Y := R.A.Y + 1;
  MenuBar := New(PMenuBar, Init(R, NewMenu(
    NewSubMenu('~F~ile', hcNoContext, NewMenu(
      StdFileMenuItems(
      nil)),
    NewSubMenu('~E~dit', hcNoContext, NewMenu(
      StdEditMenuItems(
      nil)),
    NewSubMenu('~S~earch', hcNoContext, NewMenu(
      NewItem('~F~ind...', '', kbNoKey, cmFind, hcNoContext,
      NewItem('~R~eplace...', '', kbNoKey, cmReplace, hcNoContext,
      NewItem('~S~earch again', '', kbNoKey, cmSearchAgain, hcNoContext,
      nil)))),
    NewSubMenu('~W~indows', hcNoContext, NewMenu(
      StdWindowMenuItems(
      NewLine(
      NewItem('Ca~l~culator', '', kbNoKey, cmCalculator, hcNoContext,
      nil)))),
    nil)))))));
end;

procedure TEditorApp.InitStatusLine;
var
  R: TRect;
begin
  GetExtent(R);
  R.A.Y := R.B.Y - 1;
  New(StatusLine, Init(R,
    NewStatusDef(0, $FFFF,
      NewStatusKey('~F2~ Save', kbF2, cmSave,
      NewStatusKey('~F3~ Open', kbF3, cmOpen,
      NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose,
      NewStatusKey('~F5~ Zoom', kbF5, cmZoom,
      NewStatusKey('~F6~ Next', kbF6, cmNext,
      NewStatusKey('~F10~ Menu', kbF10, cmMenu,
      NewStatusKey('', kbCtrlF5, cmResize,
      nil))))))),
    nil)));
end;

procedure TEditorApp.OutOfMemory;
begin
  MessageBox('Not enough memory for this operation.',
    nil, mfError + mfOkButton);
end;

begin
  EditorApp.Init;
  EditorApp.Run;
  EditorApp.Done;
end.
Дальше программу нужно зарегистрировать.
Допустим, мы хотим открывать её файлы *.mxt (My tXT).
Создаём такой файл блокнотом и сохраняем как filу.mxt
Два раза щёлкаешь на файле - тебе ругаются, что не могут открыть. Говоришь "Хочу выбрать из списка"
Жмёшь "Просмотреть" и ищешь свою программу (куда ты её скопировал после компиляции) - выбираешь её -> ОК
Проверяешь галочку "Открывать всё файлы этого типа" и ещё раз ОК.

Всё.



PS: Компилируется в BP7.0 (turbo.exe), как с другими компиляторами (точнее с наличием модулей) - не знаю. Пиши ,Если что.

Последний раз редактировалось Maslan; 20.10.2007 в 18:12.
Maslan вне форума Ответить с цитированием
Старый 20.10.2007, 18:31   #8
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
Смех

Большое спасибо всем.

P.S. На полный код я и не раЩитывал СпасиБо!

Последний раз редактировалось Lexakazanskij; 20.10.2007 в 18:47.
Lexakazanskij вне форума Ответить с цитированием
Старый 20.10.2007, 20:39   #9
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Да не за что....
Пиши =)

PS: Поштудируй папочку Examples в паскале. там МНОГО "интересного". Особенно tvedit.pas

Последний раз редактировалось Maslan; 20.10.2007 в 20:44.
Maslan вне форума Ответить с цитированием
Старый 01.11.2007, 22:27   #10
Lexakazanskij
Пользователь
 
Аватар для Lexakazanskij
 
Регистрация: 10.09.2007
Сообщений: 15
По умолчанию

Я бы поштудировал, да не у всех она есть
Lexakazanskij вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие файла Messir_Leonard Win Api 2 09.04.2008 19:33
Открытие файла Veiron Общие вопросы Delphi 2 27.02.2008 03:12
Открытие файла KillbrumX Помощь студентам 5 02.02.2008 20:50