Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пишу программу по перегонке данных... [D7]


Дениска ©   (2009-10-13 01:19:00) 

Всем привет! Пишу программу по перегонке данных из файла *.txt в файл *.xls. Проблема такая: при компиляции вылазит ошибка: «;» пропущено, но «.» найдено, на 32-й строке (procedure TForm1. …). Ошибка появилась после того, как я добавил строку 29. Смотрел много раз, вроде бы, с орфографией везде порядок…
Советы по проге тоже очень приветствуются…

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button3: TButton;
   OpenDialog1: TOpenDialog;
   SaveDialog1: TSaveDialog;
   procedure Button3Click(Sender: TObject);
   function CreateOleObject(const ClassName:string):IDispatch;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function CreateOleObject(const ClassName:string):IDispatch;
var f1{файл .txt}, f2{файл .xls}: file; {rчастота, sзатухание: array [1..2001] of real; mколичество строк: integer} exl,wb,sh: OleVariant;

procedure TForm1.Button3Click(Sender: TObject);
begin
 if opendialog1.Execute then begin
   assignfile(f1,opendialog1.FileName);
   reset(f1);
   {m:=число строк в файле-8;}
   {for i=1 to m do}
   {begin}
     {r[i]:=текст строки i+7, знаки 1 - 18;}
     {s[i]:=текст строки i+7, знаки 31 - 50;}
   {end;}
   closefile(f1);
 end;
 if savedialog1.Execute then begin
   exl:=CreateOleObject(InputBox('OleStr','CreateOleObject','Excel.Application.8')) ;
   try
     wb:=exl.Workbooks.Add(savedialog1.FileName);
     sh:=wb.WorkSheets[1];
   finally
     Exl := Unassigned;
     WB := Unassigned;
     Sh := Unassigned;
   end;
   assignfile(f2,savedialog1.FileName);
   rewrite(f2);
   {for i=1 to m do}
   {begin}
     {текст ячейки (строка i+1, столбец 1):=r[i];}
     {текст ячейки (строка i+1, столбец 2):=s[i];}
   {end;}
   closefile(f2);
 end;
end;

end.

Понимаю всю детскость и нубскость вопроса, но сейчас мне очень надо в этом разобраться... Если запостил не туда, извиняюсь. Заранее благодарен.


Anatoly Podgoretsky   (2009-10-14 11:31:00) [1]


> А что должно быть между begin и end?

Обычно код программы, но может быть и ничего.
Я думаю, что с CreateOleObject ты ошибся или ты реально хочешь написать свою реализацию функции, ну так можешь посмотреть в исходника, что Борланд туда воткнул, я думаю что ничего кроме объявления.


Дениска   (2009-10-14 08:29:00) [2]

Спасибо, попробую применить! А что должно быть между begin и end?

У меня нету разделителей...


Lucia   (2009-10-13 07:01:00) [3]

А стоит ли писать программу?
Excel отлично понимает формат csv - тобишь формат с разделителями


McSimm   (2009-10-13 01:51:00) [4]

function CreateOleObject(const ClassName:string):IDispatch;
var ...: OleVariant;

procedure TForm1.Button3Click(Sender: TObject);
...

метод класса получился вложен в функцию.
компилятор не ждет точку в описании процедуры внутри функции.


Германн   (2009-10-13 01:50:00) [5]

Кстати. "Перегоняют" обычно либо нефть, либо ...
:)


Германн   (2009-10-13 01:49:00) [6]

А где begin..end; для function CreateOleObject(const ClassName:string):IDispatch;?


Наверх

Титульная страница Поиск, карта сайта Написать письмо