Obsługa plików

routex
  • Rejestracja:około 22 lata
  • Ostatnio:ponad 15 lat
0

mam jedo małe pytanko:
Jak wczytać pojedyńczy bit z pliku?
W jakiej zmiennej mozna przechowywac pojedynczy bit?
I to na tyle.podro


Uśmiechnij się człowieku :)
endrique
  • Rejestracja:około 21 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:Kraków
0
Kopiuj
var F: File;
      c:Char;
      i: Integer;
begin
  assignFile(F,'NazaPliku');
  try
    while not eof(F) do
      for i:=1 to ktory_bit do   //sczytujesz bity, dopuki wskaźnik nie ustawi się na Twoim szykanym bicie;
        Read(F,c);
  showmessage(c);  // tu Ci wyświetla jeśli dojdzie do tego bitu.
  finally
    clocefile(F);
  end;
end;

mniej więcej to tyle. Można jeszcze inaczej, ale sam już do tego dojdziesz :)

Wolverine
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 6 lat
0

BIT!

A na moje oko nie bedzie to latwe. Odczytujesz bajt i rozpisujesz go na bity, jak - nie wiem.


DO
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 15 lat
  • Postów:731
0

Bit <> Bajt
Bajt to 8 bitów, więc aby odczytac bity danego bajta musisz najpierw odczytać ten bajt (np. tak jak podał endrique) a nastepnie rozbić go na bity. http://4programmers.net/Forum/viewtopic.php?id=37048&post=61527#61527


80% problemów które pojawiają sie na forum w postach rozwiązaliby samodzielnie ich autorzy, gdyby nie mieli internetu...
Marmar
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 2 lata
  • Postów:317
0

Najprosciej chyba tak:

function dajbit(b,ktory:byte):boolean;
begin result:=false;
case ktory of
0:result:=(b and 1)<>0;
1:result:=(b and 2)<>0;
2:result:=(b and 4)<>0;
3:result:=(b and 8)<>0;
4:result:=(b and 16)<>0;
5:result:=(b and 32)<>0;
6:result:=(b and 64)<>0;
7:result:=(b and 128)<>0;
end;
end;
ta funkcja oczywiscie zwraca true jesli bit 'ktory' w bajcie b jest 1 a false jesli jest on zerem.

AklimX
  • Rejestracja:prawie 22 lata
  • Ostatnio:prawie 14 lat
  • Postów:1218
0

nie da się odczytać pojedyńczego bitu, bo najmniejszym typem, który można zapisać do pliku jest bajt :-)


Piszę programy w językach: C, C++, Java, Python, Bash, PHP, SQL.
Przyjmuję zlecenia
WA
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
  • Postów:501
0

Ale bajt sklada sie z bitow, wiec mozna odczytac bajt i wyciagnac bit

Deti
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 9 lat
0

Ale co Ty chcesz wyciągać ?.. - zobacz na plik tekstowy - wyobraź sobie go jako ciąg bajtów..

B B B B B B

B - bajt..

A każdy bajt składa się z ośmiu bitów - możesz co najwyżej odczytać 8-mio bitowe kombinacje bajta - odczytać bajt i sprawdzić w tablicy ASCII jego kod w zapisie dwójkowym.


routex
  • Rejestracja:około 22 lata
  • Ostatnio:ponad 15 lat
0

Pisze gre, napisałem już prawie wszystkie funkcje importujace mapkę q3 zostało mi tylko wczytanie list PVS no i troche mi sie spie.......o.
Mam podaną liczbę klastrów i liczbe bitów w klustrze.

Jak komuś pomoż to mam kawałek kodu w C++

struct tBSPVisData
{
int numOfClusters;
int bytesPerCluster;
byte *pBitsets;
};

fread(&(m_clusters.numOfClusters), 1, sizeof(int), fp);
fread(&(m_clusters.bytesPerCluster), 1, sizeof(int), fp);
int size = m_clusters.numOfClusters * m_clusters.bytesPerCluster;
m_clusters.pBitsets = new byte [size];

fread(m_clusters.pBitsets, 1, sizeof(byte) * size, fp);

no i to na tyle


Uśmiechnij się człowieku :)
foflik
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 17 lat
0

Moze to Ci pomoze.

Kopiuj
Type
  tBSPVisData = record
    numOfClusters: Integer;
    bytesPerCluster: Integer;
    pBitsets: ^Byte;
  end;

var
  Plik: file;
  m_clusters: tBSPVisData;
  size: Integer;
begin
  AssignFile(Plik, 'nazwa');
  Reset(Plik, 1);

  BlockRead(plik, m_clusters.numOfClusters, sizeof(Integer));
  BlockRead(plik, m_clusters.bytesPerCluster, sizeof(Integer));
  size := m_clusters.bytesPerCluster * m_clusters.numOfClusters;
  GetMem(m_clusters.pBitsets, size);
  BlockRead(plik, m_clusters.pBitsets^, size);
  CloseFile(Plik);
end;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.