Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пояснение к исходному коду программы:

procedure TForm1.N2Click(Sender: TObject);

 begin

With OpenDialog1 do

If Execute Then

Begin

memo1.lines.loadfromfile(Filename);

ExtractFilename(Filename);

SaveDialog1.FileName:= Filename;

Filename:= ' ';

End;

 end;

 

этот код обеспечивает открытие файла.

 

procedure TForm1.N3Click(Sender: TObject);

begin

Memo1.Lines.SaveToFile(SaveDialog1.FileName); // Сохранение файла

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

with SaveDialog1 do                                         

If execute Then

Memo1.Lines.SaveToFile(SaveDialog1.FileName); // Меню «Сохранить как.»

 

End;

//сейчас идёт описание самой главной части программы

procedure TForm1.N5Click(Sender: TObject);

var list: TStringList;

tmpString: string;

i,CurrentSymbol,SeekSymbol, lastTag: integer;

notFound: boolean;

begin

 With SaveDialog2 do

 If execute then

Begin

list:=TStringList.Create;

for i:=0 to memo1.Lines.Count-1 do list.Add(memo1.lines[i]);

list.Insert(0,'<HTML>');

list.Add('</HTML>');

 

// в этой части (смотрите выше) происходит вставка тэгов

//<html> перед набранным текстом и </html>после текста.

 

for i:=1 to memo1.Lines.Count do

begin

lastTag:=1; tmpString:='';

for CurrentSymbol:=1 to Length(List[i]) - 9 do

if Copy(List[i], CurrentSymbol, 9) = '<img src=' then

   begin

    SeekSymbol:=CurrentSymbol; notFound:=true;

    while (SeekSymbol <= Length(List[i])) and (notFound) do

     begin

      if Copy(List[i], SeekSymbol, 1) = '>' then

       begin

        tmpString:= tmpString+'<td>'+

        Copy(List[i],lastTag,CurrentSymbol-lastTag)+

        '</td><td align=bottom>'+

        Copy(List[i],CurrentSymbol,SeekSymbol-CurrentSymbol+1) +'</td>';

        lastTag:=SeekSymbol+1; notFound:=false;

       end;

      inc(SeekSymbol);

     end;

   end;

if tmpString<>'' then

begin

  tmpString:=tmpString+'<td>'+Copy(List[i],lastTag, Length(List[i])-lastTag+1)+'</td>';

  List[i]:='<table>'+tmpString+'</table>';

end;

end;

List.SaveToFile(Filename);

list.Free;

End;

end;

//В этой части происходит вставка таблицы (смотрите стр. 9).

//Чтобы обеспечить корректное отображение формулы браузером.

 

В общем, код программы основан на нескольких принципах: на поиске тэга, в котором находится ссылка на математическую формулу, вставка таблицы, и экспортировании текста в формат HTML. При написании программы самой сложной частью оказалась вставка таблицы. В начале программа могла находить нужные тэги только в том случае, если он находился отдельно в какой либо строчке. Далее, после устранения вышеописанной ошибки, второй проблемой стала невозможность вставки в документ сразу несколько картинок, что непосредственно важно для математического документа. Самой последней проблемой была невозможность работы программы на других машинах. Эта проблема была вызвана некорректным обращением компонента программы со средой Windows. Решение оказалось банальным – я использовал браузер, отображающий результаты работы без сохранения (а в нём была проблема), который назначен Windows по умолчанию. И вот все проблемы были решены.

 

 

Заключение:

Изучение языка математической разметки «MathML» содержит в себе некоторые минусы:

1. Не все браузеры поддерживает «MathML».

2. Доскональное изучение «MathML» громоздко и сложно для обычного пользователя.

На момент написания «MathBuilder» из браузеров, которые поддерживают язык математической разметки был только Mozilla 0.9.9 и Internet Explorer 5.5 остальные не поддерживают без плагинов (англ. plug-in дополнительная программа для выполнения каких либо специфических функций). Однако, метод которым пользуется MahBuilder поддерживается всеми браузерами.

Вышеописанная программа, на мой взгляд, вносит некий вклад в развитие математических представлений в Web, потому что на всех математических сайтах, математические формулы представлены как на рисунке № 3,то есть с новой строчки, что менее корректно выглядит, в отличии от рисунка №4, когда формула отображается в той же строке, что и текст. Следовательно целесообразнее использовать метод, используемый в MathBuilder.

 

Приложение №1

Исходный код программы MathBuilder.

unit MyEditu;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, Menus, ExtDlgs, shellapi;

 

type

TForm1 = class(TForm)

Memo1: TMemo;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N7: TMenuItem;

SaveDialog2: TSaveDialog;

N6: TMenuItem;

N8: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

OpenDialog3: TOpenDialog;

OpenDialog2: TOpenDialog;

N9: TMenuItem;

N12: TMenuItem;

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

uses Unit4;

 

//es Unit2;

 

{$R *.DFM}

 

procedure TForm1.N2Click(Sender: TObject);

begin

With OpenDialog1 do

If Execute Then

Begin

memo1.lines.loadfromfile(Filename);

ExtractFilename(Filename);

SaveDialog1.FileName:= Filename;

Filename:= '';

End;

end;

 

procedure TForm1.N3Click(Sender: TObject);

begin

Memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

with SaveDialog1 do

If execute Then

Memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

procedure TForm1.N5Click(Sender: TObject);

var list: TStringList;

tmpString: string;

i,CurrentSymbol,SeekSymbol, lastTag: integer;

notFound: boolean;

begin

 With SaveDialog2 do

 If execute then

Begin

list:=TStringList.Create;

for i:=0 to memo1.Lines.Count-1 do list.Add(memo1.lines[i]);

list.Insert(0,'<HTML>');

list.Add('</HTML>');

 

for i:=1 to memo1.Lines.Count do

begin

lastTag:=1; tmpString:='';

for CurrentSymbol:=1 to Length(List[i]) - 9 do

if Copy(List[i], CurrentSymbol, 9) = '<img src=' then

   begin

    SeekSymbol:=CurrentSymbol; notFound:=true;

    while (SeekSymbol <= Length(List[i])) and (notFound) do

     begin

      if Copy(List[i], SeekSymbol, 1) = '>' then

       begin

        tmpString:= tmpString+'<td>'+

        Copy(List[i],lastTag,CurrentSymbol-lastTag)+

        '</td><td align=bottom>'+

        Copy(List[i],CurrentSymbol,SeekSymbol-CurrentSymbol+1) +'</td>';

        lastTag:=SeekSymbol+1; notFound:=false;

       end;

      inc(SeekSymbol);

     end;

   end;

if tmpString<>'' then

begin

  tmpString:=tmpString+'<td>'+Copy(List[i],lastTag, Length(List[i])-lastTag+1)+'</td>';

  List[i]:='<table>'+tmpString+'</table>';

end;

end;

List.SaveToFile(Filename);

list.Free;

End;

end;

procedure TForm1.N6Click(Sender: TObject);

// prosmotr

var list: TStringList;

tmpString: string;

i,CurrentSymbol,SeekSymbol, lastTag: integer;

notFound: boolean;

Begin

list:=TStringList.Create;

 

for i:=0 to memo1.Lines.Count-1 do list.Add(memo1.lines[i]);

list.Insert(0,'<HTML>');

list.Add('</HTML>');

 

for i:=1 to memo1.Lines.Count do

begin

lastTag:=1; tmpString:='';

for CurrentSymbol:=1 to Length(List[i]) - 9 do

if Copy(List[i], CurrentSymbol, 9) = '<img src=' then

   begin

    SeekSymbol:=CurrentSymbol; notFound:=true;

    while (SeekSymbol <= Length(List[i])) and (notFound) do

     begin

      if Copy(List[i], SeekSymbol, 1) = '>' then

       begin

        tmpString:= tmpString+'<td>'+

        Copy(List[i],lastTag,CurrentSymbol-lastTag)+

        '</td><td align=bottom>'+

        Copy(List[i],CurrentSymbol,SeekSymbol-CurrentSymbol+1) +'</td>';

        lastTag:=SeekSymbol+1; notFound:=false;

       end;

      inc(SeekSymbol);

     end;

   end;

if tmpString<>'' then

begin

  tmpString:=tmpString+'<td>'+Copy(List[i],lastTag, Length(List[i])-lastTag+1)+'</td>';

  List[i]:='<table>'+tmpString+'</table>';

end;

end;

List.SaveToFile('tmp.html');

list.Free;

ShellExecute(handle, 'open', 'tmp.html', '', '', SW_SHOW);

//winexec('tmp.html', SW_SHOW)

//Form2.showModal;

End;

 //end of prosmotr                   }

procedure TForm1.N8Click(Sender: TObject);

begin

close;

end;

procedure TForm1.N10Click(Sender: TObject);

var tmpMemo: string;

begin

With OpenDialog2 do

 if execute then

Begin

begin

tmpMemo:=tmpMemo + '<img src=' + ExtractFilename(Filename) + '>';

Memo1.SelText:=tmpMemo;

end;

End;

end;

procedure TForm1.N11Click(Sender: TObject);

var Href: String;

begin

With OpenDialog3 do

 if Execute then

 Begin

Href:=Href + '<a href=' + ExtractFilename(OpenDialog3.Filename) + '>'

+ 'Ссылка' + '</a>';

Memo1.SelText:=Href;

End;

end;

 

procedure TForm1.N12Click(Sender: TObject);

begin

form4.ShowModal;

end;

 

end.

Приложение№2.

Скриншоты.

 

Рис.1

 

Рис.2

Рис.3

 

Рис.4

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...