Trochę ten kod jest większy mam nadzieje, że tyle starczy. Plik zostaje zapisany w buforze, a potem ten bufor jest systematycznie obcinany by pozbyć się nie potrzebnych danych.
- Kod: Zaznacz cały
using std::sscanf;
licz = stan;
strumien.open(nazwa, ios::in);
if(!strumien.is_open()){
Application->Terminate();
strumien.close();
ShowMessage("Błąd odczytu kursów");
return;
}else{
strumien.seekg(8500);
while(!strumien.eof()){
getline(strumien, bufor);
bufor1 += bufor;
}
strumien.clear();
strumien.close();
// to ostatni etap kodu, który odczytuje tylko wartość, część kodu ominąłem bo jest to tylko obcinanie bufora metodą find
//klasy string
if(bufor.find(".") != string::npos){
miejsce = bufor.find(".");
bufor.assign(bufor, miejsce - 1, 4);
sscanf(bufor.c_str(), "%f.2", &kurs[licz]); //?????????
}
Potem pobraną wartość liczbową najczęściej w formacje 2.5, 3.45, 2.55 (kursy w zakładach bukmacherskich) zostaje zapisana w bazie
- Kod: Zaznacz cały
strumien.open("Typer.typowy", ios::in | ios::out | ios::binary);
if(!strumien.is_open()){
Application->Terminate();
strumien.close();
ShowMessage("Problem z bazą !!!");
return;
}else{
strumien.seekg(0);
strumien.read((char *)&Grupa, sizeof(Grupa));
for(licz = 0; licz < 9; licz++){
[b]Grupa.kurs_k[licz] = kurs[licz]; //???????????????????????????
// Grupa.wygrana[licz] = kurs[licz] * Grupa.stawka_klubu[licz];
bufor = (float)( kurs[licz] * Grupa.stawka_klubu[licz]); //????????????????????????????????????
sscanf(bufor.c_str(), "%f.2", &(Grupa.wygrana[licz])); // tutaj ponownie stosuje f.2 gdyż myślałem, iż uda mi się obciąć flota
//problem ten poruszyłem w osobnym temacie odnoście Tstringgrid, albo przynajmniej zapisać w formacie 3.230000000
}
strumien.seekg(0);
strumien.write((char *)&Grupa, sizeof(Grupa));
if(strumien.fail())
Label1->Caption = "Jakiś problem z zapisem!";
strumien.close();
}
A na koniec wszystko jest wyświetlane
- Kod: Zaznacz cały
StringGrid1->Cells[0][0] = "Nazwa";
StringGrid1->Cells[1][0] = "Kurs";
StringGrid1->Cells[2][0] = "Stawka";
StringGrid1->Cells[3][0] = "Kurs_K";
StringGrid1->Cells[4][0] = "Bilans";
StringGrid1->Cells[5][0] = "Pudło";
strumien.open("Typer.typowy", ios::in | ios::binary);
strumien.seekg(0);
strumien.read((char *)&Grupa, sizeof(Grupa));
strumien.close();
if(stan == 0){
for(licz = 0; licz < 9; licz++){
StringGrid1->Cells[0][licz + 1] = AnsiString(Grupa.nazwa[licz]);
// StringGrid1->Cells[1][licz + 1] = Grupa.
StringGrid1->Cells[2][licz + 1] = Grupa.stawka_klubu[licz];
StringGrid1->Cells[3][licz + 1] = Grupa.kurs_k[licz];//?????????????????????????????????
StringGrid1->Cells[4][licz + 1] = Grupa.bilans[licz];
StringGrid1->Cells[5][licz + 1] = Grupa.bez_remisu[licz];
StringGrid1->RowCount++;
if(Grupa.bez_remisu[licz] > 7)
Edit1->Text = "!!! Ważne !!! podział";
}
Sorry, że tak dużo ale chcieliście kod więc musiałem te fragmenty kodu wprowadzić. W systemie nie ustawiałem separatorów, pobieram z pliku i używam separatora ".", TStringGrid używa separatora ",", który pewnie jest domyślnie z systemu pobierany.
Zmiana separatora nie pomaga. Jest to fragment kodu tak obcięty by pokazać jak przebiega cały proces pobierania, zapisu i odczytu danej...
Pytajnikami oznaczone miejsca jak przechodzi dana wartość przez ten fragment kodu.