CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Wczytywanie Float i Zapis

Wczytywanie Float i Zapis

dział ogólny

Wczytywanie Float i Zapis

Nowy postprzez moderasura » środa, 9 marca 2011, 22:12

Witam
Założyłem nowy wątek bo nic takiego nie znalazłem...Posklejałem taki kawałek kodu wczytywanie pliku oraz pobieranie Float z pliku jest ok ale mam problem z zapisem do pliku po zmianie Float w polach Edit może ktoś coś poradzić jak to mniej więcej zrobić? od razu mówię ze słaby jestem w te klocki a ze nie ma takiego programu to trzeba sobie jakoś radzić :)
Builder c++

Kod: Zaznacz cały
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

BYTE *Bufor;

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (!OpenDialog1->Execute()) return;

int plik=FileOpen(OpenDialog1->FileName,fmOpenRead);
if (plik==-1) return;



int iFileLength = FileSeek(plik,0,2);
FileSeek(plik,0,0);

char *Bufor = new char[iFileLength+1];
*(Bufor+iFileLength)=0;

int iBytesRead = FileRead(plik,Bufor,iFileLength);
if (iFileLength!=iBytesRead)
   {delete Bufor;return;}


Edit1->Clear();



Edit2->Text=  FloatToStr(  *(FLOAT*)(Bufor+0x0000001c));
Edit3->Text=  FloatToStr(  *(FLOAT*)&Bufor[0x00000020]);
Edit1->Text=  FloatToStr(  *(FLOAT*)&Bufor[0x00000024]);



delete Bufor;
FileClose(plik);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{

int plik;
BYTE *Bufor;
if (OpenDialog1->FileName.Length()>0)
    {
    (OpenDialog1->FileName);

    plik=FileCreate(OpenDialog1->FileName);
    if (plik==-1)

   

*(FLOAT*)(Bufor+0x0000001c) = StrToFloat(Edit2->Text);
*(FLOAT*)(Bufor+0x00000020) = StrToFloat(Edit3->Text);
*(FLOAT*)(Bufor+0x00000024) = StrToFloat(Edit1->Text);




    FileClose(plik);
    } else
      {

      }
}
//---------------------------------------------------------------------------

Ostatnio edytowano piątek, 11 marca 2011, 17:11 przez moderasura, łącznie edytowano 1 raz
Avatar użytkownika
moderasura
Homos antropiczny
Homos antropiczny
 
Posty: 57
Dołączył(a): wtorek, 4 stycznia 2011, 20:07
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows-7 32 bit
Kompilator: C++ Borland 6
C++Builder 2009
Gadu Gadu: 0
    Windows 7Firefox

Re: Wczytywanie Float i Zapis

Nowy postprzez Cyfrowy Baron » środa, 9 marca 2011, 22:46

To plik tekstowy czy binarny? Z kodu wnioskuję, że raczej binarny...
W jaki sposób dane są zapisywane do pliku? To istotne, gdyż nie problem zapisać dane do pliku, ale jeżeli plik jest tworzony i edytowany przez jeszcze inny program to istotny jest układ danych w tym pliku. Trzeba również wiedzieć ile danych i jak są poukładane w tym pliku.
Bez tych informacji można co najwyżej stworzyć własną metodę zapisu danych do pliku, ale konstrukcja pliku ulegnie zmianie.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie Float i Zapis

Nowy postprzez moderasura » środa, 9 marca 2011, 23:53

To jest plik binarny wczytuje offset do pola edit tam zmieniam wartości liczby zmiennoprzecinkowe i chce to zapisać w tym pliku binarnym czyli FLOAT...
No właśnie w jaki sposób to zapisać? chce to zapisać za pomocą SaveDialog1 nie wiem jaka trzeba napisać składnie zapisu...
Nie mam jeszcze kodu zapis do pliku próbowałem zrobić to na zasadzie takiej jak wczytywanie pliku ale nie zapisuje albo pole edit po zmianie wartosci nie wie czy cos tam zostało zmienione
Plik nie korzysta z żadnych programów i zajmuje 72 bajty
Adresy pod którymi znajduje sie dany float znam




Kombinowałem cos takiego ale to chyba raczej tego nie łyknie ;)

Kod: Zaznacz cały
void __fastcall TForm2::Button2Click(TObject *Sender)
{
int iFileHandle;
  int iFileLength;
  int iBytesRead;
  PAnsiChar Buffer;
   if (SaveDialog1->Execute())


  try
  {
iFileHandle = FileOpen(SaveDialog1->FileName, fmOpenRead);

   if (iFileHandle > 0) {
     iFileLength = FileSeek(iFileHandle, 0, 2);
     FileSeek(iFileHandle,0,0);
     Buffer = new AnsiChar[iFileLength+1];
     iBytesRead = FileRead(iFileHandle, Buffer, iFileLength);
     FileClose(iFileHandle);

     for (int i = 0; i < iBytesRead; i++)
     {

*(FLOAT*)(Buffer+0x0000001c) = StrToFloat(Edit2->Text);
*(FLOAT*)(Buffer+0x00000020) = StrToFloat(Edit3->Text);
*(FLOAT*)(Buffer+0x00000024) = StrToFloat(Edit1->Text);
  }

   }
   else
   {
     Application->MessageBox(
      L"Can't perform one of the following file operations: Open, Seek, Read, Close.",
      L"File Error", IDOK);
   }
  }
  catch(...)
  {
   Application->MessageBox(
     L"Can't perform one of the following file operations: Open, Seek, Read, Close.",
     L"File Error", IDOK);

  }
}
Ostatnio edytowano piątek, 11 marca 2011, 01:33 przez moderasura, łącznie edytowano 5 razy
Avatar użytkownika
moderasura
Homos antropiczny
Homos antropiczny
 
Posty: 57
Dołączył(a): wtorek, 4 stycznia 2011, 20:07
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows-7 32 bit
Kompilator: C++ Borland 6
C++Builder 2009
Gadu Gadu: 0
    Windows 7Firefox

Re: Wczytywanie Float i Zapis

Nowy postprzez Cyfrowy Baron » czwartek, 10 marca 2011, 00:08

Nie odpowiedziałeś na pytanie jaki jest układ danych w pliku. Piszesz, że nie zapisujesz jeszcze nic do pliku bo nie wiesz jak, ale odczytujesz. Skąd więc masz plik do odczytywania skoro jeszcze niczego w nim nie zapisałeś?

To co kombinowałeś jest pozbawione sensu. Najpierw trzeba ustalić układ danych w pliku, czyli rozmiar, kolejność oraz ilość wartości w tym pliku. Normalnie to zaczyna się od tworzenia zapisu, a potem odczytu. Nie rozumiem jak możesz realizować odczyt nie wiedząc jak dane zostały zapisane. jak wogóle mógł powstać taki plik.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie Float i Zapis

Nowy postprzez moderasura » czwartek, 10 marca 2011, 00:23

To co kombinowałeś jest pozbawione sensu. Najpierw trzeba ustalić układ danych w pliku, czyli rozmiar, kolejność oraz ilość wartości w tym pliku. Normalnie to zaczyna się od tworzenia zapisu, a potem odczytu. Nie rozumiem jak możesz realizować odczyt nie wiedząc jak dane zostały zapisane. jak wogóle mógł powstać taki plik


Chodzi o to że plik już istnieje chce go wczytać zmienić muz dane wartości i zapisać z powrotem w tym samym pliku nie wiem jak mam to wytłumaczyć...Może tak na przykładzie pliku TXT otwieram tam jakiś plik tekstowy nic mu nie dopisuje tylko zmieniam jakieś wyrazy i zapisuje :)
Avatar użytkownika
moderasura
Homos antropiczny
Homos antropiczny
 
Posty: 57
Dołączył(a): wtorek, 4 stycznia 2011, 20:07
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows-7 32 bit
Kompilator: C++ Borland 6
C++Builder 2009
Gadu Gadu: 0
    Windows 7Firefox

Re: Wczytywanie Float i Zapis

Nowy postprzez Cyfrowy Baron » czwartek, 10 marca 2011, 10:25

Wcześniej napisałeś, że tylko Twój program korzysta z tego pliku. Pytam więc jak powstał ten plik, skoro Twój program, który z tego pliku nie korzysta nie utworzył tego pliku. Zadanie jest w sumie banalne, jeżeli to Twój program będzie tworzył plik, gdyż można taki plik utworzyć na kilka sposobów i na kilka sposobów go odczytać, np. z wykorzystaniem struktur:

KOD cpp:     UKRYJ  
#include <fstream.h>

struct StructDate
{
 float Value[3];
};

void __fastcall TForm1::ButtonSaveClick(TObject *Sender)
{
  StructDate Dane;

  /* jeżeli EditX->Text nic nie zawiera przerwij */
  if(Edit1->Text.IsEmpty() || Edit2->Text.IsEmpty() || Edit3->Text.IsEmpty())
  {
   ShowMessage("Najpierw wprowadź poprawne dane");
   return;
  }

  Dane.Value[0] = StrToFloat( Edit1->Text );
  Dane.Value[1] = StrToFloat( Edit2->Text );
  Dane.Value[2] = StrToFloat( Edit3->Text );

  /* ścieżka dosępu do pliku Dane.dat znajdującego się w tym samym katalogu co program */
  String fileName = ExtractFilePath( ParamStr(0) ) + "Dane.dat";

  fstream outfile;
  outfile.open( fileName.c_str(), ios::out | ios::binary);
  outfile.write((char *)&Dane, sizeof(Dane));
  outfile.close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonOpenClick(TObject *Sender)
{
 StructDate Dane;

 /* ścieżka dosępu do pliku Dane.dat znajdującego się w tym samym katalogu co program */
 String fileName = ExtractFilePath( ParamStr(0) ) + "Dane.dat";

 fstream infile;
 infile.open(fileName.c_str(), ios::in | ios::binary);
 infile.read((char *)&Dane, sizeof(Dane));

 if(sizeof(Dane) == 0 || infile == NULL)
 {
  ShowMessage("Plik nie istnieje lub jest pusty");
  return;
 }

 Edit1->Text = (String)Dane.Value[0];
 Edit2->Text = (String)Dane.Value[1];
 Edit3->Text = (String)Dane.Value[2];

 infile.close();
}


Lepiej jednak użyć w strukturze zmiennej typu char, a nie float, gdyż float ma to do siebie, że jeżeli wypełnisz np. dwa miejsca po przecinku to przy wczytywaniu do tej zmiennej i tak zostanie wprowadzonych 14 miejsc po przecinku, gdyż ta zmienna tyle ich obsługuje.

Kod dla C++Builder wersji przed 2009, czyli operującej na AnsiString i char:
KOD cpp:     UKRYJ  
#include <fstream.h>
#include <stdio.h>

struct StructDate
{
 char Value[3][100];
};

void __fastcall TForm1::ButtonSaveClick(TObject *Sender)
{
  StructDate Dane;

  /* jeżeli EditX->Text nic nie zawiera przerwij */
  if(Edit1->Text.IsEmpty() || Edit2->Text.IsEmpty() || Edit3->Text.IsEmpty())
  {
   ShowMessage("Najpierw wprowadź poprawne dane");
   return;
  }

  sprintf(Dane.Value[0], "%s", Edit1->Text.c_str());
  sprintf(Dane.Value[1], "%s", Edit2->Text.c_str());
  sprintf(Dane.Value[2], "%s", Edit3->Text.c_str());

  /* ścieżka dosępu do pliku Dane.dat znajdującego się w tym samym katalogu co program */
  String fileName = ExtractFilePath( ParamStr(0) ) + "Dane.dat";

  fstream outfile;
  outfile.open( fileName.c_str(), ios::out | ios::binary);
  outfile.write((char *)&Dane, sizeof(Dane));
  outfile.close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonOpenClick(TObject *Sender)
{
 StructDate Dane;

 /* ścieżka dosępu do pliku Dane.dat znajdującego się w tym samym katalogu co program */
 String fileName = ExtractFilePath( ParamStr(0) ) + "Dane.dat";

 fstream infile;
 infile.open(fileName.c_str(), ios::in | ios::binary);
 infile.read((char *)&Dane, sizeof(Dane));

 if(sizeof(Dane) == 0 || infile == NULL)
 {
  ShowMessage("Plik nie istnieje lub jest pusty");
  return;
 }

 Edit1->Text = (String)Dane.Value[0];
 Edit2->Text = (String)Dane.Value[1];
 Edit3->Text = (String)Dane.Value[2];

 infile.close();
}


Dla C++Builder wersji 2009 i nowszej , czyli operującej na UnicodeString i wchar_t zmieni się tylko ten fragment kodu
KOD cpp:     UKRYJ  
void __fastcall TForm1::ButtonSaveClick(TObject *Sender)
{
  StructDate Dane;

  /* jeżeli EditX->Text nic nie zawiera przerwij */
  if(Edit1->Text.IsEmpty() || Edit2->Text.IsEmpty() || Edit3->Text.IsEmpty())
  {
   ShowMessage("Najpierw wprowadź poprawne dane");
   return;
  }

  sprintf(Dane.Value[0], "%s", ((AnsiString)Edit1->Text).c_str());
  sprintf(Dane.Value[1], "%s", ((AnsiString)Edit2->Text).c_str());
  sprintf(Dane.Value[2], "%s", ((AnsiString)Edit3->Text).c_str());

  /* ścieżka dosępu do pliku Dane.dat znajdującego się w tym samym katalogu co program */
  String fileName = ExtractFilePath( ParamStr(0) ) + "Dane.dat";

  fstream outfile;
  outfile.open( fileName.c_str(), ios::out | ios::binary);
  outfile.write((char *)&Dane, sizeof(Dane));
  outfile.close();
}


Jeszcze ograniczenia dla Edit'ów tak by akceptowały tylko liczby i przecinek:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, wchar_t &Key) /* zdarzenie OnKeyPress */
{
  /* ograniczenie pola Edit do wprowadzania tylko liczb i przecinka */
  if(!strchr("0123456789,", Key) && Key != VK_BACK) Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, wchar_t &Key)
{
  /* ograniczenie pola Edit do wprowadzania tylko liczb i przecinka */
  if(!strchr("0123456789,", Key) && Key != VK_BACK) Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, wchar_t &Key)
{
  /* ograniczenie pola Edit do wprowadzania tylko liczb i przecinka */
  if(!strchr("0123456789,", Key) && Key != VK_BACK) Key = 0;
}


Jak widzisz nie problem zapisać i odczytać dane do/z pliku o ile znasz strukturę tych danych w pliku. By wiedzieć jak odczytać ten Twój plik, trzeba wiedzieć jaka jest jego struktura, ale to już masz, gdyż pobierasz konkretne bajty, więc odwróć to i zapisz te bajty pod tym samym adresem.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie Float i Zapis

Nowy postprzez polymorphism » czwartek, 10 marca 2011, 11:03

Kod: Zaznacz cały
for (int i = 0; i < iBytesRead; i++)
{
   Edit1->Text =  FloatToStr(*(FLOAT*)(Buffer+0x0000001c));
   Edit2->Text =  FloatToStr(*(FLOAT*)&Buffer[0x00000020]);
   Edit3->Text =  FloatToStr(*(FLOAT*)&Buffer[0x00000024]);
}

Po jakiego grzyba ta pętla? :shock:



Zamiast czytać plik w całości do pamięci tylko po to, żeby odczytać trzy zmienne, czytaj te wartości bezpośrednio z pliku:

KOD cpp:     UKRYJ  
ifstream is("ścieżka", ios::binary);

float v1, v2, v3;

is.seekg(0x1c);
is.read((char*)&v1, 4);
is.read((char*)&v2, 4);
is.read((char*)&v3, 4);
if(!is)
{
        // fuck!!! błąd odczytu.
}


Zapis wygląda analogicznie:

KOD cpp:     UKRYJ  
ofstream os("ścieżka", ios::binary);

os.seekp(0x1c);
os.write((char*)&v1, 4);
os.write((char*)&v2, 4);
os.write((char*)&v3, 4);
if(!os.flush())
{
        // fuck!!! błąd zapisu.
}
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
moderasura
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie Float i Zapis

Nowy postprzez moderasura » czwartek, 10 marca 2011, 19:18

Chodzi mi ogólnie ze plik który jest w załączniku w pierwszym poście już mam, nie mam potrzeby go tworzyć...Kombinowałem z kodem Barona ale nie mam zielonego pojęcia jak przypisać adresy Offset tak by je odczytał i po zmianie zapisał inne w tym otwartym pliku...Jeśli już coś zapisuje to narusza mi strukturę pliku i się nie nadaje już do użycia...Wiem że tam trzeba podać jakieś wskazniki ale jakie to nie mam zielonego pojęcia może jak jeszcze trochę przy tym posiedzę to dojdę 8-)
Avatar użytkownika
moderasura
Homos antropiczny
Homos antropiczny
 
Posty: 57
Dołączył(a): wtorek, 4 stycznia 2011, 20:07
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows-7 32 bit
Kompilator: C++ Borland 6
C++Builder 2009
Gadu Gadu: 0
    Windows 7Firefox

Re: Wczytywanie Float i Zapis

Nowy postprzez Cyfrowy Baron » czwartek, 10 marca 2011, 19:40

polymorphism podał gotowe rozwiązanie. Jeżeli ono nie rozwiązuje Twojego problemu, to już nie wiem...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie Float i Zapis

Nowy postprzez moderasura » piątek, 11 marca 2011, 23:10

To co tu jeszcze trzeba dopisać by wyświetlał dany FLOAT w polu TEdit? takiej składni to nigdy na oczy nie widziałem :oops:

KOD cpp:     UKRYJ  
ifstream is("ścieżka", ios::binary);

float v1, v2, v3;

is.seekg(0x1c);
is.read((char*)&v1, 4);
is.read((char*)&v2, 4);
is.read((char*)&v3, 4);
if(!is)
{
        // fuck!!! błąd odczytu.
}
Avatar użytkownika
moderasura
Homos antropiczny
Homos antropiczny
 
Posty: 57
Dołączył(a): wtorek, 4 stycznia 2011, 20:07
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows-7 32 bit
Kompilator: C++ Borland 6
C++Builder 2009
Gadu Gadu: 0
    Windows 7Firefox

Re: Wczytywanie Float i Zapis

Nowy postprzez Cyfrowy Baron » sobota, 12 marca 2011, 09:40

Masz przecież zmienne typu float v1, v3 i v3. Wystarczy pobrać dane z tych zmiennych, lub zapisać dane do tych zmiennych:

KOD cpp:     UKRYJ  
float v1, v2, v3;

Edit1->Text = (String)v1;
Edit2->Text = (String)v2;
Edit3->Text = (String)v3;

v1 = StrToFloat( Edit1->Text );
v2 = StrToFloat( Edit2->Text );
v3 = StrToFloat( Edit3->Text );
KOD cpp:     UKRYJ  
 ifstream is("ścieżka", ios::binary);

 float v1, v2, v3;

 is.seekg(0x1c);

 is.read((char*)&v1, 4);
 is.read((char*)&v2, 4);
 is.read((char*)&v3, 4);

 if(!is)
 {
  ShowMessage("Błąd odczytu");
   return;
 }

 Edit1->Text = (String)v1;
 Edit2->Text = (String)v2;
 Edit3->Text = (String)v3;


polymorphism tak już ma, że na ogół przedstawia kod bardziej poglądowy niż użyteczny, co dla początkujących najczęściej jest niezrozumiałe.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
moderasura
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie Float i Zapis

Nowy postprzez moderasura » sobota, 12 marca 2011, 10:44

Dzięki chłopaki za wyczerpującą odpowiedz :D Jednak to forum jest magiczne :D
Avatar użytkownika
moderasura
Homos antropiczny
Homos antropiczny
 
Posty: 57
Dołączył(a): wtorek, 4 stycznia 2011, 20:07
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows-7 32 bit
Kompilator: C++ Borland 6
C++Builder 2009
Gadu Gadu: 0
    Windows 7Firefox

Re: Wczytywanie Float i Zapis

Nowy postprzez moderasura » piątek, 15 kwietnia 2011, 15:27

Witam znacie może jakiś myk na zapisanie tego nietypowego FLOAT (-1.#QNAN ) hex ff ff ff ff lub to nie float a jakieś błędne dane bo wczytuje mi to w pole edit ale oczywiście wywala wyjątkiem posługuje sie wczytywanie i zapisem kodem Barona. Czy to wczytać jako Hex ?
Avatar użytkownika
moderasura
Homos antropiczny
Homos antropiczny
 
Posty: 57
Dołączył(a): wtorek, 4 stycznia 2011, 20:07
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows-7 32 bit
Kompilator: C++ Borland 6
C++Builder 2009
Gadu Gadu: 0
    Windows 7Firefox

Re: Wczytywanie Float i Zapis

Nowy postprzez Cyfrowy Baron » piątek, 15 kwietnia 2011, 16:32

moderasura napisał(a):-1.#QNAN


NAN – symbol który nie reprezentuje wartości liczbowej, najczęściej powstaje w wyniku wykonania niedozwolonej operacji. Wszystkie bity wykładnika są równe 1, natomiast mantysa ma niezerową wartość.

QNAN – ciche NAN – przekazanie tej wartości jako argumentu operacji nie powoduje zgłoszenia wyjątku. Tak samo jak w przypadku NAN, ale pierwszy bit mantysy zawsze równy 1.

Mantysa - w matematyce funkcje zaokrąglające liczby rzeczywiste do liczb całkowitych odpowiednio w dół i w górę.

To nie jest wartość liczbowa, to żadna wartość, jeśli nie liczyć części całkowitej. Nie można tego umieścić w zmiennej typu float, możesz to umieścić co najwyżej w zmiennej typu char lub String.

moderasura napisał(a):ff ff ff ff


To wartość szesnastkowa co odpowiada wartości dziesiętnej: 4294967295
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie Float i Zapis

Nowy postprzez moderasura » wtorek, 26 kwietnia 2011, 13:35

Pisze w jednym temacie by nie zaśmiecać niepotrzebnie forum. Pytanie brzmi jak płynnie zmienić wartość FLOAT np jakiegoś obiektu o (180.st) w prawo lub w lewo? Chcę to zrobić np. już z istniejącej zmiennej FLOAT. Ogólnie chodzi mi o obroty w Osi.Robiłem to za pomocą SpinEdit ale to coś mi nie wychodzi bo nie wiem czy to ma też jakieś znaczenie ale obiekt posiada 3 FLOATY do obracania operując jednym float obiekt się rozłazi jak stare prześcieradło :shock:
Avatar użytkownika
moderasura
Homos antropiczny
Homos antropiczny
 
Posty: 57
Dołączył(a): wtorek, 4 stycznia 2011, 20:07
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows-7 32 bit
Kompilator: C++ Borland 6
C++Builder 2009
Gadu Gadu: 0
    Windows 7Firefox

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości

cron