Arkusz kalkulacyjny

0

Chciałbym napisać jakiś prosty arkusz kalklulacyjny, który pozwalałby na wykonywanie podstawowych działań (dodawanie, odejmowanie, dzielenie, mnożenie, pierwiastek, średnia itp.itd.) Tylko jest jeden problem... [stuk] Jak mam się do tego zabrać ?? Nigdzie nie widziałem jeszcze przykładowego kodu takiej aplikacji.... Z jakich komponentów skorzystać ??? Proszę o pomoc!!!

0

Z jakich komponentów skorzystać ???

StringGrid proponuję Co do kodu, to chyba gdzies na 4p jest kod analizujacy string z zapisanymi operacjami matematycznymi (typu '3+4*5'). A na pewno było o tym na forum.

0

kiedyś nad tym myślałem i doszedłem do wniosku, że potrzebny jest TStringGrid do wyświetlania wyników formuł i array of array of string do przechowywania samych formuł. Powiedzmy, że klikasz na jakąś komórkę to z tablicy pobiera ci formułę i wyświetla w edicie, po zakończeniu edycji zapisuje w tablicy, a wynik pokazuje w StringGrid.

0

Hmm.... W sumie to nie głupi pomysł... Tylko pod warunkiem, że chodzi o proste działania... A jeżeli chciałbym np. zrobić coś takiego: =Suma(A1:A5) albo =srednia(A2:A12) ?? Podejrzewam (a nawet jestem pewny :)) że trzeba napisać procedurę, która to wyliczy. No problem. Tylko potem jak mam sprawdzić, jakie działanie jest akurat wpisane w komórce ?? [glowa] [hurra]

0

w polach grida trzymasz : funkcja(formula) wiec wyswietla sie wynik dzialania a przechowywana jest formula, potem mozesz pokombinowac zeby po kliknieciu w okienko zmienial na sama formule

funkcja to oczywiscie twoj "interpreter" formuly

interpreter powinien brac formule i zapisywac do jakiegos stringa buforujacego a nastepnie:

  • sprawdzac czy nie ma niedozwolonych znakow, wstepnie sprawdzac czy pozamykane nawiasy
  • interpreter dzialan prostych -> jezeli dwie CYFRY oddzielone sa ktoryms ze znakow (*/+-) to pobiera sasiadujace LICZBY, wykonuje dzialanie i podmienia w obrabianym stringu, wiadomo ze pilnujemy kolejnosci dzialan i wykonujemy tak dlugo az wszystkie dzialania proste znikna
  • reduktor nawiasow - jezeli znajdzie liczbe w nawiasach nie poprzedzona slowem kluczowym-funkcja to usuwa nawiasy, powinien umiec "zredukowac" samotna liczbe ujemna w nawiasach przez wykonanie odejmowania
  • szukac znanych sobie slow-funkcji, czyli jak natrafi na slowo pierwiastek to wycina to slowo wraz z nastepujacym po nim nawiasem (wraz z zawartoscia) a na jego miejsce wstawia wynik
    • to wymaga napisania calego mnostwa modulow-funkcji
  • jezeli w lancuchu nie ma slow kluczowych (funkcji) to przechodzi do interpretera dzialan prostych (jeszcze raz)

to taki moj ogolny pomysl na to jakimi kategoriami bym myslal piszac takie cos, oczywiscie po drodze jeszcze rozpoznawanie adresow komorek (wstawienie wartosci z danego pola ale tylko poza funkcjami bo w funkcjach to juz trzeba bardziej sie temu przyjrzec), wykrywanie zapetlonych linkow i cale mnostwo drobiazgow ktore moga skutecznie obrzydzic cala zabawe :)

docelowo widzialbym wszystko zgrupowane w jednej funkcji ktora wykonuje sie w petli tak dlugo na danym stringu dopoki ma cos do zrobienia a wewnetrznie odwoluje sie (uzywa) pomniejszych funkcji wyspecjalizowanych

jeżeli chciałbym np. zrobić coś takiego: =Suma(A1:A5) albo =srednia(A2:A12) ??

jezeli wszystkie operacje poprzedzajace zostaly wykonane to w stringu powinny pozostac tylko funkcje z "niezinterpretowanymi" adresami komorek lub wartosciami liczbowymi i liczby czyli np:
=-(SUMA(A1:A5)+235468)/(32425.4244*PIERWIASTEK(435))
w tym momencie interpreter powinien zauwazyc ze nie ma nic do roboty poza funkcjami i przejsc do analizy funkcji czyli po napotkaniu slowa SUMA uzyc odpowiedniej metody na jej policzenie, wewnatrz funkcji oczywiscie bedzie potrzebny mechanizm interpretacji adresow

calosm mozna zrobic na tysiac sposobow i pewnie za bardzo sie wdalem w szczegoly gdzie moze sie czaic sporo pulapek a nawet sama metodyka moze byc zla ale licze ze ktos mnie sprostuje jakby co ... od czegos jest forum :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1