Obsługa plików

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

0
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 :)

0

BIT!

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

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

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.

0

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

0

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

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.

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

0

Moze to Ci pomoze.

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;

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0