Problem z komponentem do rysowania wykresów - TWykresFX

problemy z funkcjonowaniem bibliotek, komponentów itp.

Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Speedy » niedziela, 23 listopada 2008, 15:28

Witam.

Mam następujący problem z komponentem do rysowania wykresów (TWykresFX), który można ściągnąć w dziale Download->Komponenty (http://cyfbar.republika.pl/comp.html).
Otóż mogę sobie narysować rozmaite standardowe funkcje (liniową, kwadratową, etc.), ale problem pojawia się, gdy chcę dodać np. potęgę, pierwiastek lub funkcję trygonometryczną.
Wpisuję np.

WykresFX1->Funkcja = "sin(x)";

lub zamiast sin(x) podaję potega(x,2) lub pow(x,2) i program się wysypuje.
Operatory mnożenia, dzielenia, dodawania, odejmowania działają, ale nie wiem, jak uruchomić potęgi, pierwiastki, funkcje trygonometryczne i ew. logarytmiczne.

Bardzo proszę o pomoc.

Pozdrawiam,
Piotr
Avatar użytkownika
Speedy
 
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Cyfrowy Baron » niedziela, 23 listopada 2008, 18:49

Autorem komponentu jest użytkownik serwisu, taki sam jak Ty Marek Pietrucha i to u niego trzeba by szukać pomocy. Prawdopodobnie występuje tutaj jakaś niezgodność środowiska BCB.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Cyfrowy Baron » poniedziałek, 24 listopada 2008, 17:38

Chyba już się domyślam co robisz źle.

Piszesz:

WykresFX1->Funkcja = "sin(x)";

ale dlaczego x skoro funkcja oczekuje tutaj jakiejś liczby, a ty podajesz jej literę x, która liczbą nie jest. Funkcja (tutaj o nazwie) Funkcja pobiera jako argument wartość typu AnsiString, czyli tekst i dalej sobie to przetwarza, ale zamiast x musi być liczba, a nie litera.

Być może masz coś w rodzaju tego:

int x = 10;
WykresFX1->Funkcja = "sin(x)";

ale w ten sposób nie podstawiasz pod x wartości 10, tylko x.
Jeżeli tak postąpiłeś, to jest to błąd w logicznym myśleniu.
Powinno się najpierw dokonać konwersji zmiennej x na tekst, czyli:

int x = 10;
WykresFX1->Funkcja = "sin(" + (String)x + ")";

mam nadzieję, że dostrzegasz różnicę.
Jeżeli to nie rozwiązało problemu, to nie wiem w czym tkwi błąd.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Speedy » poniedziałek, 24 listopada 2008, 17:52

Dzięki za odpowiedź, ale chyba nie o to chodzi.

Piszę w programie tylko:

WykresFX1->Funkcja = "sin(x)";

Nie definiuję nigdzie tego x. Jeśli podam wartość liczbową dla sinusa, to wtedy otrzymam funkcję stałą, której wykresem będzie prosta linia, a ja chcę otrzymać wykres sinusa. Biblioteka math.h jest zawarta w programie.

Jak próbuję skompilować i uruchomić ten program, to pojawia mi się taki komunikat:

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class Blad with message 'Exception Object Address: 0x9B62FA'. Process stopped. Use Step or Run to continue.


W opisie biblioteki jest napisane, że można sobie podawać tego x w celu narysowania wykresu dowolnej funkcji.

Np. jeśli dam:

WykresFX1->Funkcja = "x*x";

to wykres wyświetla się poprawnie.

Nie mam pojęcia, dlaczego ten komponent nie chce wyświetlić tego sinusa.
Jak próbuję ustawić tę funkcję w Object Inspectorze, to pojawia mi się komunikat:

nieznana funkcja sin


Da się coś na to poradzić :-) ?
Avatar użytkownika
Speedy
 
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Cyfrowy Baron » poniedziałek, 24 listopada 2008, 18:43

Nie wiem. Nie ja jestem autorem tego komponentu, a jest zbyt rozbudowany, więc nie będę go analizował krok po kroku.
Komponent został stworzony w środowisku BCB 6 Personal, więc w tym środowisku powinien działać bez zarzutu, jeżeli jednak instalujesz go w innym środowisku to może występować niezgodność bibliotek.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Speedy » poniedziałek, 24 listopada 2008, 18:58

Zainstalowałem go w BCB 6 personal. Cóż. W takim razie spróbuję się skontaktować z autorem biblioteki, albo poszukać takiej, która śmiga bez problemu (znacie może jakąś?).
Avatar użytkownika
Speedy
 
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Witold » poniedziałek, 24 listopada 2008, 19:32

Speedy napisał(a):Da się coś na to poradzić :-) ?

Wydaje mi się że musisz sobie dodać sam funkcje, wtedy działa.

Kod: Zaznacz cały
#include <math.h>
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
  TWykresFX * wykresFX = new TWykresFX(this);
  wykresFX->Parent = this;
  wykresFX->DodajFunkcje1("sin", sinl); // <-----------------------------
  wykresFX->Funkcja = "sin(x)";           
}
//---------------------------------------------------------------------------
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Speedy » poniedziałek, 24 listopada 2008, 19:41

Rzeczywiście działa.

Dzięki Witold :D.
Avatar użytkownika
Speedy
 
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez wargo » wtorek, 25 listopada 2008, 21:31

Cyfrowy Baron napisał(a):Piszesz:
WykresFX1->Funkcja = "sin(x)";
ale dlaczego x skoro funkcja oczekuje tutaj jakiejś liczby, a ty podajesz jej literę x, która liczbą nie jest. Funkcja (tutaj o nazwie) Funkcja pobiera jako argument wartość typu AnsiString, czyli tekst i dalej sobie to przetwarza, ale zamiast x musi być liczba, a nie litera.

Być może masz coś w rodzaju tego:

int x = 10;
WykresFX1->Funkcja = "sin(x)";

ale w ten sposób nie podstawiasz pod x wartości 10, tylko x.
Jeżeli tak postąpiłeś, to jest to błąd w logicznym myśleniu.
Powinno się najpierw dokonać konwersji zmiennej x na tekst, czyli:

int x = 10;
WykresFX1->Funkcja = "sin(" + (String)x + ")";

Co????

Przecież x to zmienna i jeszcze jedno: czy ta funkcja potrzebuje tekstu czy liczby i w postaci AnsiString czy int?
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez Cyfrowy Baron » środa, 26 listopada 2008, 09:51

Do wargo: najwyraźniej niczego z tego nie zrozumiałeś. Jest zasadnicza różnica między zmienną a tekstem.

przy takim zapisie:

int x = 10;
WykresFX1->Funkcja = "sin(x)";

funkcji jest przekazywany tekst "sin(x)" - x nie jest tutaj zmienną lecz tekstem, czyli do funkcji zostaje przekazany następujący łańcuch znaków: "sin(x)", podczas gdy powinno być: "sin(10)"

przy takim zapisie:

int x = 10;
WykresFX1->Funkcja = "sin(" + (String)x + ")";

do funkcji przekazywana jest wartość zmiennej x, czyli w efekcie funckja otrzyma taki łańcuch znaków "sin(10)".

Problem został rozwiązane, więc te uwagi nie dotyczą problemu, lecz zdziwienia wargo.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z komponentem do rysowania wykresów - TWykresFX

Nowy postprzez wargo » czwartek, 27 listopada 2008, 16:13

Musiałem nie zauważyć że to jest w cudzysłowiu. Przepraszam za kłopot.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
Podziękował : 12
Otrzymał podziękowań: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Biblioteki i komponenty

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości

cron