tekst a liczba

0

Jak zrobic to zeby z wpisanego pliku do memo zczytal do edit tylko dzialanie matematyczne [???]


0

No to w pliku musisz to dzialanie zapisac miedzy jakimis znakami np:
| 10 + 10 | i wtedy odczytac to latwo mozesz za pomoca fscanf

0

NO tak ale ja nie mam pojecia na temat pisania programow wiec jakbyc mogl to powiedz dokladnie jak to zrobic bylbym bardzo wdzieczny

0

Najpierw robisz petle w ktorej za pomoca fgets lecisz znak po znaku i sprawdzasz czy jest to np: "|", jezeli tak to uruchamiasz fscanf(plik,"%[^|]|",buf); i w buf masz swoje dzialanie.

0

a j kto napisac ?? bo jak juz pisalem nie mam o tym pojecia [???]

0
        char tmp[20], *buf;
        int n = Memo1->Text.Length();
        buf = (char*)malloc(n*sizeof(char)+2);
        Memo1->GetTextBuf(buf, n+1);
        static int i = 0;

        for(i; i < n; i++)
                if((buf[i] >= '0' && buf[i] <= '9') || buf[i] == '+')
                {
                        static int j = 0;
                        tmp[j] = buf[i];
                        j++;
                        if((buf[i+1] < '0' || buf[i+1] > '9') && buf[i+1] != '+')
                        {
                                int s = 0;
                                for(int k = 0; k < 19; k++)
                                {
                                    if(tmp[k] == '+')
                                    s++;
                                }
                                if(s == 1)
                                {

                                        Edit1->Text = tmp;
                                        i++;
                                        j = 0;
                                        break;
                                }
                        }

                }

        free(buf);

<font color="green">//dopisane</span>
Pomysł cepy jest dobry ale trzeba zaimplementować samemu funkcje wczytywania z pliku do memo żeby wczytać 2+2 zamiast |2+2|

0

super dzieki, a jak do tego dadac inne dzialania typu - czy * lub / ??

0
            char tmp[20], *buf;
            int n = Memo1->Text.Length();
            buf = (char*)malloc(n*sizeof(char)+2);
            Memo1->GetTextBuf(buf, n+1);
            static int i = 0;

            for(i; i < n; i++)
                        if((buf[i] >= '0' && buf[i] <= '9') || buf[i] == '+' || buf[i] == '-' || buf[i] == '*' || buf[i] == '/')
                        {
                                    static int j = 0;
                                    tmp[j] = buf[i];
                                    j++;
                                    if((buf[i+1] < '0' || buf[i+1] > '9') && buf[i+1] != '+' && buf[i+1] != '-' && buf[i+1] != '*' && buf[i+1] != '/')
                                    {
                                                int s = 0;
                                                for(int k = 0; k < 19; k++)
                                                {
                                                      if(tmp[k] == '+' || tmp[k] == '-' || tmp[k] == '*' || tmp[k] == '/')
                                                      s++;
                                                }
                                                if(s == 1)
                                                {

                                                            Edit1->Text = tmp;
                                                            i++;
                                                            j = 0;
                                                            break;
                                                }
                                    }

                        }

            free(buf);

Jeżeli chcesz wpisywać bardziej złożone działanie np. z nawiasami to pozostaje ci mechanizm tagów.

0

Dzieki za wszytsko !! wszystko dziala super. [cya] [browar]

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