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

C++ Builder 6: Zapis danych z Edit1 i Edit5 w kolumnie do pliku

gjanek 25 Wrz 2008 23:27 8671 13
REKLAMA
  • #1 5572376
    gjanek
    Poziom 12  
    Posty: 93
    Ocena: 3
    Napisalem funkcje zapisu do pliku (juz istniejacego) i wszystko jest ok ale dane zapisywane sa z pola Edit1 i Edit5 w jedne linii a chcialbym je zapisywac w kolumnie. Moze ktos ma pomysł na to?
    Poniżej przedstawiam kod:

    if ( FileExists("plik.txt") == true )
       {
    
    
    
    ShowMessage("Plik istnieje");
    int dlugosc = Edit1->Text.Length();
    int dlugosc5 = Edit5->Text.Length();
    
    int plik = FileOpen("plik.txt", fmOpenWrite);
    FileWrite(plik,Edit1->Text.c_str(),dlugosc);
    FileWrite(plik, Edit5->Text.c_str(),dlugosc5);
    
    FileClose(plik);
    }
    
            else
                ShowMessage("Plik nie istnieje");
    
    }


    Kod proszę umieszczać w znacznikach code. Temat poprawiłem, proszę się zapoznać z regulaminem - krzychoocpp
  • REKLAMA
  • #2 5572454
    monsinior
    Poziom 17  
    Posty: 162
    Pomógł: 18
    Ocena: 7
    
    FileWrite(plik,Edit1->Text.c_str(),dlugosc); 
    //dodajemy przejscie do nastepnej lini
    FileWrite(plik,"\n");
    FileWrite(plik, Edit5->Text.c_str(),dlugosc5); 

    Pozdrawiam Mariusz M.
  • REKLAMA
  • #3 5573755
    gjanek
    Poziom 12  
    Posty: 93
    Ocena: 3
    Niestety tak nie idzie dostaje taki blad w kompilatorze:

    [C++ Error] Unit2.cpp(134): E2193 Too few parameters in call to '_fastcall FileWrite(int,const void *,unsigned int)'

    Zdania rozpoczynamy wielką literą i kończymy kropką - krzychoocpp
  • REKLAMA
  • #4 5573945
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Oj, o długości w drugim się zapomniało koledze... czytaj komunikaty!

    Zdania rozpoczynamy wielką literą i kończymy kropką - krzychoocpp
  • #5 5574172
    monsinior
    Poziom 17  
    Posty: 162
    Pomógł: 18
    Ocena: 7
    Dżyszla napisał:
    oj, o długości w drugim się zapomniało koledze... czytaj komunikaty!


    Właśnie ja zapomniałem wpisać długości a kolega zastosował metodę kopiuj wklej. wystarczy przeczytać co napisał kompilator w errorze i
    zmienić
    
    FileWrite(plik,"\n",strlen("\n"));
    
  • REKLAMA
  • #6 5575054
    gjanek
    Poziom 12  
    Posty: 93
    Ocena: 3
    No niestety to tez nie zadzialalo. W polu Edit1 bylo wpisane www , a w polu Edit5 aaa.
    Do pliku wpisal wszystko w jednej lini ale pomiedzy www i aaa postawil takie splaszczone zero.
  • #7 5580328
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    W jakim edytorze oglądałeś wyniki? Większość niewspółpracujących ze standardem Linuxowym (a ściślej - pracujących w standardzie DOS) wymaga do złamania linii sekwencji znaków o kodach 0Dh, 0Ah.
  • #8 5581742
    gjanek
    Poziom 12  
    Posty: 93
    Ocena: 3
    Całość piszę pod win XP. Wyniki ogladam w notatniku.
  • #10 5584737
    gjanek
    Poziom 12  
    Posty: 93
    Ocena: 3
    Ok, zatem masz jakiś pomysł jak to poprawić ?.
  • #12 5593451
    gjanek
    Poziom 12  
    Posty: 93
    Ocena: 3
    No właśnie sprawdziłem wszystkie kombinacje 0Dh, 0Ah zamiast "\n" w linii:
     FileWrite(plik,"\n",strlen("\n"));


    i dalej nie działa. Możesz poprawić tą linie tak jak ma być?
    Z góry dziękuję.
  • #13 5593582
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    \r\n (albo \n\r - nie pamietam teraz). Byle długość dopasować! Jeśli nie da to efektu, to pokaż tutaj plik w postaci szesnastkowej (lub zamieść go)
  • #14 5594069
    gjanek
    Poziom 12  
    Posty: 93
    Ocena: 3
    Dzięki już działa.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy problemu zapisu danych z pól Edit1 i Edit5 w pliku tekstowym w formie kolumnowej, a nie w jednej linii, w środowisku C++ Builder 6. Początkowo dane były zapisywane bez znaków nowej linii, co powodowało łączenie tekstów w jednej linii. Proponowano dodanie znaku przejścia do nowej linii za pomocą FileWrite(plik, "n", strlen("n")), jednak pojawił się błąd kompilacji z powodu braku podania długości argumentu. Po poprawieniu długości i zastosowaniu sekwencji znaków końca linii odpowiedniej dla systemu Windows ("rn") problem został rozwiązany. Użytkownik potwierdził, że po zastosowaniu "rn" dane z Edit1 i Edit5 są zapisywane w pliku w osobnych liniach, co jest zgodne z oczekiwaniami. Dyskusja podkreśla znaczenie prawidłowego określenia długości zapisywanych danych oraz użycia właściwej sekwencji znaków końca linii w systemie Windows, zwłaszcza przy przeglądaniu pliku w Notatniku.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA