Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

MiniExel на паскале ;)   Найти похожие ветки 

 
Лёха   (2006-03-03 21:41) [0]

Здравствуйте, мастера!

Вот чел попросил задание сделать (институтское ;)). Надо на чистом паскале писать:(. Собственно:

Входной документ (текстовой файл):
------------------------------------------------
                     | TEXT1     | TEXT2   | TEXT3
------------------------------------------------
LINE 1              | 82, 9      | 56        | SUM1
LINE 2              | 34          | 45        | SUM2
LINE 3              | 45          | 45        | SUM3
------------------------------------------------

В выходном документе на месте SUMx - сумма. Причём с использованием какого-то рационального приёма (что это за такое я не знаю).

Пожалуйста помогите!


 
YurikGL ©   (2006-03-03 23:39) [1]

И вчем должна заключаться помощь?


 
Palladin ©   (2006-03-04 00:17) [2]

Одно из основных принципиальных замечаний: Если нет осмысленного конкретного вопроса значит просят конкретное законченное решение :)


 
DSKalugin ©   (2006-03-04 00:40) [3]

можно на чистом паскале использовать компонент F1Book
или внедрить эксель через ОЛЕ
или ДБФ с вычисляемыми полями :-)


 
Palladin ©   (2006-03-04 01:05) [4]


> DSKalugin ©   (04.03.06 00:40) [3]

ню ню, чистый паскаль ОЛЕ... :)


 
jack128 ©   (2006-03-04 01:40) [5]

Palladin ©   (04.03.06 1:05) [4]
ню ню, чистый паскаль ОЛЕ... :)


в чем проблема??

 IDispatch = ^TDispatchRec;
 TDispatchRec = record
   QueryInterface: function (const IID: TGUID; out Obj): HResult; stdcall;
   AddRef: function: Integer; stdcall;
   Release: function: Integer; stdcall;
   GetTypeInfoCount: function(out Count: Integer): HResult; stdcall;
   GetTypeInfo: function(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall;
   GetIDsOfNames: function(const IID: TGUID; Names: Pointer;
     NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall;
   Invoke: function(DispID: Integer; const IID: TGUID; LocaleID: Integer;
     Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
 end;
var
 Disp: IDispatch;
CoCreateInstance(..., Disp);
и в перед, с песней :-)))))


 
Германн ©   (2006-03-04 02:02) [6]


> jack128 ©   (04.03.06 01:40) [5]
>
> Palladin ©   (04.03.06 1:05) [4]
> ню ню, чистый паскаль ОЛЕ... :)
>
> в чем проблема??
>
>  IDispatch = ^TDispatchRec;
>  TDispatchRec = record
>    QueryInterface: function (const IID: TGUID; out Obj):
>  HResult; stdcall;
>    AddRef: function: Integer; stdcall;
>    Release: function: Integer; stdcall;
>    GetTypeInfoCount: function(out Count: Integer): HResult;
>  stdcall;
>    GetTypeInfo: function(Index, LocaleID: Integer; out TypeInfo):
>  HResult; stdcall;
>    GetIDsOfNames: function(const IID: TGUID; Names: Pointer;
>
>      NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
>  stdcall;
>    Invoke: function(DispID: Integer; const IID: TGUID; LocaleID:
>  Integer;
>      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr:
>  Pointer): HResult; stdcall;
>  end;
> var
>  Disp: IDispatch;
> CoCreateInstance(..., Disp);
> и в перед, с песней :-)))))
>


Тогда, наверно проблема в том, что считать "чистым паскалем". Имхо.
Мне почему-то кажется, что Palladin ©   (04.03.06 01:05) [4] не считает "чистым паскалем" то, где встречается stdcall. А также ещё очень многое из jack128 ©   (04.03.06 01:40) [5]. Опять же имхо.

Ещё одно имхо, уж извините. Неиспользование VCL, не тождественно "Чистому паскалю"! По крайней мере в том смысле, в котором я его понял в данном сабже.


 
jack128 ©   (2006-03-04 02:13) [7]

Германн ©   (04.03.06 2:02) [6]
Мне почему-то кажется, что Palladin ©   (04.03.06 01:05) [4] не считает "чистым паскалем" то, где встречается stdcall.


Хм. То есть чистый паскаль не поддерживает различные заглашения вызовов??
Германн ©   (04.03.06 2:02) [6]
А также ещё очень многое из jack128 ©   (04.03.06 01:40) [5].

Ну да, ни const, ни out в пакале нету, но не думаю, что будет большая проблема их заменить на подходящий по смыслу аналог. тоже касается нетизированных параметров..
Вообще то этот пост [5] был просто шуткой, не думал, что кто будет воспринимать его всерьез. Уж не говоря о том, что в нем есть не только синтаксические, но и логические ошибки..


 
Германн ©   (2006-03-04 02:33) [8]


> jack128 ©   (04.03.06 02:13) [7]
>
> Германн ©   (04.03.06 2:02) [6]
> Мне почему-то кажется, что Palladin ©   (04.03.06 01:05)
> [4] не считает "чистым паскалем" то, где встречается stdcall.
>
>
> Хм. То есть чистый паскаль не поддерживает различные заглашения
> вызовов??


Не. Ну я увидел в сабже:
Входной документ (текстовой файл):
------------------------------------------------
                    | TEXT1     | TEXT2   | TEXT3
------------------------------------------------
LINE 1              | 82, 9      | 56        | SUM1
LINE 2              | 34          | 45        | SUM2
LINE 3              | 45          | 45        | SUM3

Добавил тезис о "чистом паскале". И решил для себя, что речь идёт о том паскале, который не знает ничего о dll! И следовательно о стандартах "вызовов" и стандартах "передачи параметров"!


 
IceBeerg ©   (2006-03-04 11:47) [9]

Лёха   (03.03.06 21:41)
На вскидку... пишем функцию для парсинга строки и вычисления SUMx и используем ее х раз, ну скока нуна...
Вот такая рациональность... а технически все просто, главное чтобы руки росли из правильноьго места, ну и голова была на плечах...


 
TUser ©   (2006-03-04 12:10) [10]

Чистый ПАСКАЛЬ - это то, что изначально придумано Виртом. Все остальное - грязный. Итак, нельзя использовать юниты, классы, интерфесы, объекты автоматизации, компоненты, библиотеки и много чего еще. Собственно ото тут и не нужно.

А вот в чем должен заключать затребованный в задании рациональный подход - тайна сия велика есть (с).


 
GuAV ©   (2006-03-04 15:11) [11]


> IDispatch = ^TDispatchRec;
> TDispatchRec = record
>    QueryInterface: function (const IID: TGUID; out
>Obj): HResult; stdcall;
>    AddRef: function: Integer; stdcall;

Такое кстати можно, пример есть, см. Delphi7\Demos\ActiveX\ShellExt\qregister.dpr

Здесь уровень косвенности не тот и self ещё нужен.


 
jack128 ©   (2006-03-04 15:14) [12]

GuAV ©   (04.03.06 15:11) [11]
Здесь уровень косвенности не тот и self ещё нужен

я заметил. потому и сказал, что
jack128 ©   (04.03.06 2:13) [7]
есть не только синтаксические, но и логические ошибки..


 
АРІ   (2006-03-04 15:26) [13]

Собственно ОТО тут и не нужно.

Да, общая теория относительности тут совершенно не при чем. Шутка... :)

А насчет "чистого паскаля". Если мне не изменяет память, в модуле System присутствуют участки кода, а-ля "{$IFDEF PUREPASCAL}". Не знаю, что такое PASCAL, но слово PURE мне до боли знакомо. Сейчас в словаре посмотрю...

:)

Причём с использованием какого-то рационального приёма

Это, вероятно, значит, что надо писать программу, которая будет расчитывать не только приведенную Вами таблицу (и только ее), но чтобы программа могла работать и с другими табличками, лучше - с произвольным количеством строк. Я думаю, это и имелось в виду. Вероятно, если реализовать еще и работу с произвольным количеством столбцов, то это будет уже не "рационализация", а "изобретение"... :)


 
McSimm ©   (2006-03-04 16:34) [14]

Кстати, кто помнит TP1 ?
С ним как раз шла демка - электронная таблица. Паскаль кристальной чистоты :)

Вот, откопал раритет - кому интересно, можете скачать.
http://www.delphimaster.ru/tpq.zip
попробовал -- работает !
:)

(я даже комбинации клавиш в редакторе довольно быстро повспоминал, непривычно, но пальцы вспомнили)


 
Marser ©   (2006-03-04 16:37) [15]

> [14] McSimm ©   (04.03.06 16:34)

Битая ссылка :-(


 
McSimm ©   (2006-03-04 16:57) [16]

Сорри (быстрый набор, чтоб его :)
http://www.delphimaster.ru/tp1.zip


 
OSokin ©   (2006-03-04 17:24) [17]

Блин, да скачай паскаль четвертый! Там в примерах есть такое.


 
TStas ©   (2006-03-04 21:38) [18]

Я ради чисьтого интереса решал такую задачу - написать эелекитроннуцю таблицу, чтобы типа экселя работала, со ссылками. Jack128 дельными советами очень помог. Но раз на чисто Паскале, наверно, нельзя использовать объекты, а там вся идея была: есть объект ячеййки, у него формула, текст и массив ссылок, т. е. координат ячеек, которые на нее ссылаются. Когда Тест изменился, ячейки по списку всем это сообщает, чтобы они пересчитались. Когда меняется формула, сначала из списка ВСЕ адреса удаляются, потом из формулы находятся адреса и добавляются в список. Вот так все и работало. Без глюков, кстати.
Понятно, что как в экселе, адрес ячейки заменялся на ее текст.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.035 c
8-1129640565
Mirror
2005-10-18 17:02
2006.03.26
слои TIFF


1-1140515584
-=ARMAN=-
2006-02-21 12:53
2006.03.26
Как запустить программу из памяти?


2-1142174343
@gent
2006-03-12 17:39
2006.03.26
как распечатать memo ?


2-1142324933
dabreezy
2006-03-14 11:28
2006.03.26
Опять вопрос по потокам


2-1141988262
Der Nechk@ssoff
2006-03-10 13:57
2006.03.26
Реакция на открытие папки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский