logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak naprawić błąd konwersji StrToFloat w Delphi 7 przy metodzie Gaussa?

maciekm7 06 Maj 2012 14:24 1896 7
REKLAMA
  • #1 10866639
    maciekm7
    Poziom 11  
    Posty: 27
    Witam
    Mam problem z zamainą StrToFloat. Otóż napisałem program w vcl w delphi 7 który ma rozwiązywać układ równań metodą gaussa. Równania zapisujemy w jednym stringgridzie a wyrazy wolne w drugim stringgridzie. W kolejnych dwóch stringgridach wyświetlana ma być macierz górnotrójkatna a w 5 stringgridzie wyniki obliczeń. Obliczenia są wykonywane po naciśnięciu guzika i tu pojawia się problem. Po naciśnięciu przycisku wyskakuje błąd dotyczący błednej zamiany StrToFloat (miejsce którego tyczy sie błąd zaznaczyłem w kodzie). Proszę o jakąś wskazowke jak poprawić ten błąd. Oto mój kod:
    Kod: Delphi
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 10866881
    Xitami
    Poziom 29  
    Posty: 1130
    Pomógł: 118
    Ocena: 31
    a powiedzmy liczba Pi, to 3.14 czy 3,14?
  • REKLAMA
  • #3 10867400
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 225
    Jeśli chcemy używać tekstowych reprezentacji liczb przecinkowych, to trzeba upewnić się co do użytego separatora dziesiętnego. Funkcja StrToFloat, podobnie jak wszystkie funkcje konwersji liczba <->tekst operują na superglobalnej zmiennej DecimalSeparator
  • REKLAMA
  • #4 10867587
    maciekm7
    Poziom 11  
    Posty: 27
    Nie rozumie jak mam to użyć w moim programie.
  • #5 10868196
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 225
    Albo zmień DecimalSeparator na taki, jaki używasz, albo zamień wcześniej w tekście wszystkie kropi i przecinki na DecimalSeparator (choć z tym trzeba ostrożnie, bo np. polska notacja księgowa często używa kropki jako separatora tysięcy).
  • #6 10889592
    maciekm7
    Poziom 11  
    Posty: 27
    Poprawiłem program zastępując zera jedynkami to znaczy w ten sposób:
    Kod: Delphi
    Zaloguj się, aby zobaczyć kod
    lecz niestety program nadal nie działa, ale znikł błąd. Może mi ktoś powiedzieć czy w dobry sposób wywołuje procedury: zamiana_sg_na_liczby, trojkat, wypisz,rownanie? (Nie mam przy nich pisanych żadnych parametrów w nawiasach) Czy dobrze używam tych procedur?
  • #7 10889842
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 225
    Wywoływać dobrze wywołujesz. A czy jest to politycznie poprawne, to inna kwestia. Nie powinno się korzystać ze zmiennych globalnych, jak to zrobiłeś zapewne. Procedury są nieeleganckie.
  • REKLAMA
  • #8 10949087
    maciekm7
    Poziom 11  
    Posty: 27
    Niestety programu nie udało mi się skończyć aby w pełni działał. Dziękuje wszystkim za pomoc w próbie rozwiązania problemu.

Podsumowanie tematu

✨ Użytkownik napotkał problem z konwersją wartości tekstowych na liczby zmiennoprzecinkowe w Delphi 7 przy użyciu funkcji StrToFloat w kontekście rozwiązywania układu równań metodą Gaussa. W dyskusji podkreślono znaczenie separatora dziesiętnego, który jest kontrolowany przez zmienną globalną DecimalSeparator. Użytkownicy sugerowali, aby upewnić się, że separator w danych wejściowych odpowiada ustawieniom DecimalSeparator lub aby zamienić kropki i przecinki w danych przed konwersją. Użytkownik próbował poprawić kod, ale nie udało mu się zakończyć programu. Wskazano również na nieeleganckie użycie zmiennych globalnych w procedurach.
Wygenerowane przez model językowy.
REKLAMA