Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dwa pytania (znaki/pliki programu).

Ostatnio zmodyfikowano 2008-12-28 12:14
Autor Wiadomość
GoldWolf
Temat założony przez niniejszego użytkownika
Dwa pytania (znaki/pliki programu).
» 2008-12-22 17:34:21
Witam, mam takie pytania:

1. Czy do zapisu tekstu do pliku można używać tylko zmiennej typu char?
Jak stosuje string to mi działa tylko podczas działania programu ponowne odpalenie powoduje wyświetlenie krzaków.


2. W jaki sposób najlepiej realizować pliki konfiguracyjne dla programu. Czy jak np. goście tworzą QIII to poziom życia, stan gry i inne parametry użytkownika (gracza), zapisują do jakiegoś pliku zwykłego z odpowiednim rozszerzeniem by zwykły śmiertelnik w nim nie grzebał. Jak takie coś realizować ?
P-2895
lynx
» 2008-12-22 18:16:15
1. Możesz stosowac typ char albo nawet jego tablice. Nie wiem dlaczego pojawiają Ci się krzyżki, ale może nie czyścisz pliku i to przez to. Bez kodu trudo jest cokolwiek wywnioskować.

2. To zależy tylko od Ciebie. Jednak sam plik z rozerzeniem innym niż *.txt nie wystarczy. Ponieważ nie ważne czy ten sam plik otworzysz za pomocą notatnika w postaci *.txt czy w np. *.nbrh, to zawsze będziesz widział ten sam tekst. Aby zabezpieczyć się przed edytowaniem takich zapisów najlepiej jest użyć nie typowego rozszerzenia oraz wymyślić swoje szyfrowanie tekstu. Do tego celu możesz też użyć chyba najpopularniejszego kodowania XOR. Do tego celu będziesz sobie tworzył klucz i tekst który ma zostać zakodowany. Aby prawidłowo odczytać tekst podszebny Ci jest też owy klucz, bo bez niego wyjdą Ci właśnie wspomniane krzyżyki. ;)

/edit1:
Tutaj masz link do artykułu gdzie na samym dole masz opisane wspomniane kodowanie XOR.
P-2896
GoldWolf
Temat założony przez niniejszego użytkownika
» 2008-12-23 08:37:41
To fragment kodu:


C/C++
struct Druzyna {
    string nazwa[ 9 ];
    float kurs[ 9 ];
    float stawka[ 9 ];
    int wynik[ 9 ];
    float bilans[ 9 ];
};

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click( TObject * Sender ) {
   
    for( int licz = 0; licz < 9; licz++ ) {
       
        Typ.nazwa[ licz ] = "Drużyna ";
        Typ.kurs[ licz ] = 0.0;
        Typ.stawka[ licz ] = 0.0;
        Typ.wynik[ licz ] = 3;
        Typ.bilans[ licz ] = 0.0;
    }
    fstream tworz_baze;
    tworz_baze.open( "Typer.typowy", ios::out | ios::binary );
    tworz_baze.write(( char * ) & Typ, sizeof( Typ ) );
    tworz_baze.close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click( TObject * Sender ) {
   
    StringGrid1->Cells[ 0 ][ 0 ] = "Nazwa";
    StringGrid1->Cells[ 1 ][ 0 ] = "Marka";
    StringGrid1->Cells[ 2 ][ 0 ] = "Cena w PLN";
   
    fstream czytaj_baze;
    czytaj_baze.open( "Typer.typowy", ios::in | ios::binary );
    czytaj_baze.seekg( 0 );
    czytaj_baze.read(( char * ) & odczyt_typ, sizeof( odczyt_typ ) );
    for( int i = 0; i < 5; i++ ) {
        StringGrid1->Cells[ 0 ][ i + 1 ] = AnsiString( odczyt_typ.nazwa[ i ].c_str() );
        StringGrid1->Cells[ 1 ][ i + 1 ] = odczyt_typ.stawka[ i ];
        StringGrid1->Cells[ 2 ][ i + 1 ] = odczyt_typ.bilans[ i ];
        StringGrid1->RowCount++;
    }
    StringGrid1->RowCount--;
    czytaj_baze.close();
}
//---------------------------------------------------------------------------

Łatwo się domyślić pierwszy guzik zapisuje drugi odczytuje. Problem jest taki że gdy string nazwa[9]; zamiast char nazwa[9][20]; to bo zamknięciu aplikacji, ponowne uruchomienie nie da mi tych danych które zostały zapisane. Dlatego pytam czy po za char do przechowywania tekstu można użyć czegoś innego.




P-2904
GoldWolf
Temat założony przez niniejszego użytkownika
» 2008-12-28 12:14:39
No tak wygląda, że raczej się używa char do tego chociaż myślę, że są(powinny być) jakieś inne sposoby.

Do do szyfrowania to coś wymyślę sobie ...
P-3027
« 1 »
  Strona 1 z 1