Odwołanie się do pola pustego Stringa

0

Witam,

Mam problem z odwołaniem się do pustego Stringa w mojej aplikacji. Problematyczne jest pole: fuel_actually_used_on_the_card. W linii 188 odwołuje się do tego pola, a tak naprawdę informacja o tym polu jest w linii 214. Proszę o pomoc.

package sample;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.stage.Stage;
import javafx.scene.control.TextField;


import java.io.IOException;
import java.lang.invoke.VarHandle;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.*;
import java.util.concurrent.atomic.AtomicLong;

import static java.lang.Double.*;

public class Main extends Application {

    int lastid;
    Statement st;
    ResultSet rs;

    @FXML
    private TextField number_card_ID;
    @FXML
    private DatePicker date_card;
    @FXML
    private TextField number_card;
    @FXML
    private TextField counter_at_the_beginning;
    @FXML
    private TextField counter_at_the_end;
    @FXML
    private TextField number_of_km_driven;
    @FXML
    private TextField fuel_level_on_receipt_of_the_card;
    @FXML
    private TextField fuel_level_when_the_card_is_returned;
    @FXML
    private TextField number_of_operating_hours_of_the_unit;
    @FXML
    private TextField burning_oil_while_the_unit_is_running;
    @FXML
    private TextField amount_of_fuel_purchased;
    @FXML
    private TextField standard_fuel_consumption;
    @FXML
    private TextField fuel_actually_used_on_the_card;
    @FXML
    private TextField save_overheats;
    @FXML
    private TextField ilosc_zakupionego_paliwa;
    @FXML
    private TextField zuzyte_paliwo_faktycznie_z_karty;



    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("ROZLICZENIE PALIWA");
        primaryStage.setScene(new Scene(root, 1200, 768));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }



    public void closeItemClicked(ActionEvent event) {

    }


    public void createdMenuClicked(ActionEvent event) {
        Parent root;
        try {
            root = FXMLLoader.load(getClass().getResource("sample.fxml"));
            Stage stage = new Stage();
            stage.setTitle("ZESTAWIENIE");
            stage.setScene(new Scene(root, 1024, 768));
            getLastid();
            stage.show();
            // Hide this current window (if this is what you want)
            //((Node)(event.getSource())).getScene().getWindow().hide();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }


    public void onenFilesMethod(ActionEvent event) {
    }

    public void saveTextToFile(ActionEvent event) {
    }

    public void getDateMethod(ActionEvent event) {
    }


    public static Connection connect() throws ClassNotFoundException {
        Class.forName("org.sqlite.JDBC");
        String url = "jdbc:sqlite:C:\\Program Files\\DB Browser for SQLite\\fuel.db";
        Connection conn = null;

        try {
            conn = DriverManager.getConnection(url);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return conn;
    }

    //final AtomicLong identyfier = new AtomicLong(1);

    public void insert() throws ClassNotFoundException {
        String sql = ("INSERT INTO tally ('number_card_ID', 'date_card', 'counter_at_the_beginning', 'counter_at_the_end', " +
                "'number_of_km_driven', 'fuel_level_on_receipt_of_the_card', 'fuel_level_when_the_card_is_returned', " +
                "'number_of_operating_hours_of_the_unit', 'burning_oil_while_the_unit_is_running', " +
                "'amount_of_fuel_purchased', 'standard_fuel_consumption', 'fuel_actually_used_on_the_card', 'save_overheats') " +
                "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        try (Connection conn = this.connect();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setString(1, number_card_ID.getText());
            pstmt.setString(2, ((TextField) date_card.getEditor()).getText());
            pstmt.setString(3, counter_at_the_beginning.getText());
            pstmt.setString(4, counter_at_the_end.getText());
            pstmt.setString(5, number_of_km_driven.getText());
            pstmt.setString(6, fuel_level_on_receipt_of_the_card.getText());
            pstmt.setString(7, fuel_level_when_the_card_is_returned.getText());
            pstmt.setString(8, number_of_operating_hours_of_the_unit.getText());
            pstmt.setString(9, burning_oil_while_the_unit_is_running.getText());
            pstmt.setString(10, amount_of_fuel_purchased.getText());
            pstmt.setString(11, standard_fuel_consumption.getText());
            pstmt.setString(12, fuel_actually_used_on_the_card.getText());
            pstmt.setString(13, save_overheats.getText());

            //date_card = new DatePicker();
            //date_card.setPromptText("Data");
            pstmt.executeUpdate();
            conn.close();
        } catch (SQLException | ClassNotFoundException e) {
            System.out.println(e.getMessage());
        }
    }

    public void getLastid() {

        String sql = "select max(number_card_ID) from tally";

        try (Connection conn = this.connect();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            st = conn.createStatement();
            rs = st.executeQuery(sql);
            if (rs.next()) {
                lastid = rs.getInt(1);
                lastid++;
                number_card_ID.setText(Integer.toString(lastid));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public void clickButton() throws ClassNotFoundException, SQLException {
            int number1 = Integer.valueOf(counter_at_the_beginning.getText());
            int number2 = Integer.valueOf(number_of_km_driven.getText());
            int sum1 = number1 + number2;
            counter_at_the_end.setText(String.format(String.valueOf(sum1)));

            double number3 = valueOf(fuel_level_on_receipt_of_the_card.getText());
            //System.out.println(number3);
            double number4 = valueOf(amount_of_fuel_purchased.getText());
            double number5 = valueOf(fuel_actually_used_on_the_card.getText());
            double sum2 = number3 + number4 - number5;
            BigDecimal bigDecimal = new BigDecimal(sum2).setScale(2, RoundingMode.HALF_UP);
            double newBigDecimal = bigDecimal.doubleValue();
            fuel_level_when_the_card_is_returned.setText(String.valueOf(newBigDecimal));

            double number6 = valueOf(burning_oil_while_the_unit_is_running.getText());
            double sum3 = ((number2 * 28) / 100) + number6;
            BigDecimal bigDecimal1 = new BigDecimal(sum3).setScale(2, RoundingMode.HALF_UP);
            double newBigDecimal1 = bigDecimal1.doubleValue();
            standard_fuel_consumption.setText(String.valueOf(newBigDecimal1));

            double number7 = valueOf(number_of_operating_hours_of_the_unit.getText());
            double number8 = valueOf(burning_oil_while_the_unit_is_running.getText());
            double sum4 = number7 * number8;
            BigDecimal bigDecimal2 = new BigDecimal(sum4).setScale(2, RoundingMode.HALF_UP);
            double newBigDecimal2 = bigDecimal2.doubleValue();
            burning_oil_while_the_unit_is_running.setText(String.valueOf(newBigDecimal2));

            // to może być błędne (przedostatnia komórka Excela)
            double number9 = valueOf(standard_fuel_consumption.getText());
            System.out.println(number9);
            double number10 = valueOf(fuel_actually_used_on_the_card.getText());
            System.out.println(number10);
            number10 = number9;
            System.out.println(number10);
            fuel_actually_used_on_the_card.setText(String.valueOf(number10));

            //oszczędności/przepały
            // fuel_actually_used_on_the_card - standard_fuel_consumption
            double number11 = valueOf(fuel_actually_used_on_the_card.getText());
            double number12 = valueOf(standard_fuel_consumption.getText());
            double difference = number11 - number12;
            BigDecimal bigDecimal3 = new BigDecimal(difference).setScale(2, RoundingMode.HALF_UP);
            double newBigDecimal3 = bigDecimal3.doubleValue();
            save_overheats.setText(String.valueOf(newBigDecimal3));




    }
}


0

valueOf nie zwraca przypadkiem Stringa?

0

@TAXIarz:

najpierw mialem nic nie pisać, ale jak zobaczyłem public void clickButton() throws ClassNotFoundException, SQLException to zmieniłem zdanie
O ile ten SQL jeszcze warunkowo (w projekcie w fazie rozwoju) , ale ClassNotFoutn to koder musiał być w skrajnej rozpaczy w konsekwencji jakiś szemranych wyborów wcześniej.

Straszna rzeźba, te wigety GUI + wartości danych + algorytmy + kwerendy. Jak skomasowany przykład negatywny "jak nie robić"

MODEL, to jest to, co ma cię ratować.
Tam mają siedzieć typowane dane, ich związki, asercje itd...

google java fx model
Wiem, że w FX się tego używa, osobiscie stroniłem i stronię od środowiska XML + Java (tutaj FX) , wolę samą Javę *) (odpowiednikiem jest Swing)
W Swingu, kiedyś bylem dobry, pięknie się używa Modeli, masz żródłą GUI wolne od niuansów danych, algorytmiki itd.. Naprawdę czyste projekty wychodzą

TAXIarz napisał(a):

Witam,

Mam problem z odwołaniem się do pustego Stringa w mojej aplikacji. Problematyczne jest pole: fuel_actually_used_on_the_card. W linii 188 odwołuje się do tego pola, a tak naprawdę informacja o tym polu jest w linii 214. Proszę o pomoc.

*) A te fałszywe numery linii to nie z XML-a ? To znaczna wada właśnie takich narzędzi ...
Jak NAPRAWDĘ brzmi wyjątek, bo mam wątpliwości czy dobrze interpretujesz ?
Żaden wyjątek nie brzmi "pusty String" czy "empty String"

0
ZrobieDobrze napisał(a):

@TAXIarz:

najpierw mialem nic nie pisać, ale jak zobaczyłem public void clickButton() throws ClassNotFoundException, SQLException to zmieniłem zdanie
O ile ten SQL jeszcze warunkowo (w projekcie w fazie rozwoju) , ale ClassNotFoutn to koder musiał być w skrajnej rozpaczy w konsekwencji jakiś szemranych wyborów wcześniej.

Straszna rzeźba, te wigety GUI + wartości danych + algorytmy + kwerendy. Jak skomasowany przykład negatywny "jak nie robić"

MODEL, to jest to, co ma cię ratować.
Tam mają siedzieć typowane dane, ich związki, asercje itd...

google java fx model
Wiem, że w FX się tego używa, osobiscie stroniłem i stronię od środowiska XML + Java (tutaj FX) , wolę samą Javę *) (odpowiednikiem jest Swing)
W Swingu, kiedyś bylem dobry, pięknie się używa Modeli, masz żródłą GUI wolne od niuansów danych, algorytmiki itd.. Naprawdę czyste projekty wychodzą

TAXIarz napisał(a):

Witam,

Mam problem z odwołaniem się do pustego Stringa w mojej aplikacji. Problematyczne jest pole: fuel_actually_used_on_the_card. W linii 188 odwołuje się do tego pola, a tak naprawdę informacja o tym polu jest w linii 214. Proszę o pomoc.

*) A te fałszywe numery linii to nie z XML-a ? To znaczna wada właśnie takich narzędzi ...
Jak NAPRAWDĘ brzmi wyjątek, bo mam wątpliwości czy dobrze interpretujesz ?
Żaden wyjątek nie brzmi "pusty String" czy "empty String"

Podaję błąd, jaki dostaję, kiedy wypełniam wszystkie pola w GUI.

"C:\Program Files\openjdk-11.0.1_windows-x64_bin\jdk-11.0.1\bin\java.exe" --module-path "C:\Program Files\openjfx-11.0.2_windows-x64_bin-sdk\javafx-sdk-11.0.2\lib" --add-modules=javafx.controls,javafx.fxml "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.5\lib\idea_rt.jar=51262:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.5\bin" -Dfile.encoding=UTF-8 -classpath C:\testOkienek\out\production\testOkienek;C:\Users\Rafał_2\.m2\repository\org\openjfx\javafx-fxml\11\javafx-fxml-11.jar;C:\Users\Rafał_2\.m2\repository\org\openjfx\javafx-fxml\11\javafx-fxml-11-win.jar;C:\Users\Rafał_2\.m2\repository\org\openjfx\javafx-controls\11\javafx-controls-11.jar;C:\Users\Rafał_2\.m2\repository\org\openjfx\javafx-controls\11\javafx-controls-11-win.jar;C:\Users\Rafał_2\.m2\repository\org\openjfx\javafx-graphics\11\javafx-graphics-11.jar;C:\Users\Rafał_2\.m2\repository\org\openjfx\javafx-graphics\11\javafx-graphics-11-win.jar;C:\Users\Rafał_2\.m2\repository\org\openjfx\javafx-base\11\javafx-base-11.jar;C:\Users\Rafał_2\.m2\repository\org\openjfx\javafx-base\11\javafx-base-11-win.jar;C:\testOkienek;C:\testOkienek\lib\sqlite-jdbc-3.7.2.jar sample.Main
mar 13, 2023 9:51:16 PM javafx.fxml.FXMLLoader$ValueElement processValue
WARNING: Loading FXML document with JavaFX API of version 16 by JavaFX runtime of version 11.0.2
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1787)
    at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8879)
    at javafx.controls/javafx.scene.control.Button.fire(Button.java:200)
    at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)
    at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3851)
    at javafx.graphics/javafx.scene.Scene$MouseHandler.access$1200(Scene.java:3579)
    at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1849)
    at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2588)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:397)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:434)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:390)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:433)
    at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
    at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
    at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
    at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
    at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1784)
    ... 47 more
Caused by: java.lang.NumberFormatException: empty String
    at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
    at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.base/java.lang.Double.parseDouble(Double.java:543)
    at java.base/java.lang.Double.valueOf(Double.java:506)
    at sample.Main.clickButton(Main.java:188)
    ... 58 more

0
TAXIarz napisał(a):

W linii 188 odwołuje się do tego pola, a tak naprawdę informacja o tym polu jest w linii 214. Proszę o pomoc.

To musisz zrobić podróz do przyszłości.

Co za problem DLA AUTORA opanować kolejność ?
Dużo kosztował ten brązowy kod ?

0
ZrobieDobrze napisał(a):
TAXIarz napisał(a):

W linii 188 odwołuje się do tego pola, a tak naprawdę informacja o tym polu jest w linii 214. Proszę o pomoc.

To musisz zrobić podróz do przyszłości.

Co za problem DLA AUTORA opanować kolejność ?
Dużo kosztował ten brązowy kod ?

Kosztował trochę czasu.

1

ChatGPT nie działa?

Błąd, który występuje w kodzie, to java.lang.NumberFormatException: empty String. Ten błąd jest spowodowany próbą konwersji pustego łańcucha znaków na liczbę. Ten błąd występuje w linii 188 w klasie Main, gdy wywoływana jest metoda clickButton.

0

Caused by: java.lang.NumberFormatException: empty String

0
ŁF napisał(a):

Caused by: java.lang.NumberFormatException: empty String

Ok już rozumiem, układam kolejność. Zostały mi 3 pola nie liczalne.

0

@TAXIarz:

Może pora na naumienie się użycia debugera ?
Minęła doba, i nie masz nic gotowego - miałbyś w pół godziny

1

BTW masz sporo zduplikowanego kodu:

BigDecimal bigDecimal3 = new BigDecimal(difference).setScale(2, RoundingMode.HALF_UP);
double newBigDecimal3 = bigDecimal3.doubleValue();
save_overheats.setText(String.valueOf(newBigDecimal3));

Zmienia się jedynie nazwa zmiennej. Ubierz to w metodę i używaj jej w każdym miejscu. Dzięki temu:

  • oszczędzisz sobie dziwnych nazw typu bigDecimal3, newBigDecimal3,
  • ewentualne błędy związane np. z próbą konwersji pustej wartości do liczby rozwiążesz w jednym miejscu,
  • będziesz mieć krótszy kod łatwiejszy do zrozumienia i utrzymania.

Twoja metoda getLastid() będzie źródłem wielu problemów w środowisku wieloprocesowym/wielowątkowym. W czasie kiedy jeden wątek pobierze najwyższe id inny wątek może dodać kolejny rekord, skończy się duplikatami, a jeśli masz constraint na kolumnie z id wymuszający unikalność to polecą wyjątki. A ponieważ generujesz id przed wypełnieniem formularza, to pozostawiasz mnóstwo czasu na to, żeby taka sytuacja zaszła. Ponadto przechwytujesz tutaj pewne wyjątki, nie informując kodu wołającego tę metodę, że coś poszło nie tak. I jeszcze taki szczegół - nie getLastid, tylko getLastId. Dbaj o spójność i bądź dokładny.

Mieszasz konsolę z oknami:

System.out.println(number10);
fuel_actually_used_on_the_card.setText(String.valueOf(number10));

Użyj debugera zamiast robić takie kwiatki.

Nazewnictwo zmiennych pomocniczych to tragedia w dziesięciu aktach. number1, number2, ..., bigDecimal3, newBigDecimal3, ... Przecież możesz nazwać zmienną pomocniczą prawidłowo, a potem używać jej w wielu miejscach, bez definiowania kolejnych zmiennych.

0
ZrobieDobrze napisał(a):

@TAXIarz:

Może pora na naumienie się użycia debugera ?
Minęła doba, i nie masz nic gotowego - miałbyś w pół godziny

Spokojnie, wszystkie pola już są liczalne, te które mają być do wyliczenia. Fakt mija doba, ale ja jeszcze pracuję zawodowo. Ciężko rzucić obowiązki i tylko kodować.

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