Форум программистов, компьютерный форум CyberForum.ru

Бинарные файлы.как найти? - C++

Восстановить пароль Регистрация
 
FriendIk
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 59
04.06.2013, 19:58     Бинарные файлы.как найти? #1
Как найти молодого сотрудника в бинарных файлах? ( Ввожу имя фамилию, год, должность и вывожу в Мемо1, а затем нужно найти молодого сотрудника и вывести в Мемо2...как прописать это в коде?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 19:58     Бинарные файлы.как найти?
Посмотрите здесь:

Бинарные файлы.. C++
C++ Бинарные файлы
C++ С++ бинарные файлы
бинарные файлы C++
Бинарные файлы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
04.06.2013, 21:15     Бинарные файлы.как найти? #2
C++
1
2
3
4
5
6
Person*   pThePerson = FindPerson(Name,Surname,Age,Title);
 
if (!IsVeryOld(pThePerson)) 
{ 
   Memo2.SetPerson(pThePerson); 
}
FriendIk
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 59
04.06.2013, 22:00  [ТС]     Бинарные файлы.как найти? #3
Код
[CPP]//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
#include <fstream.h>
fstream f;
char *filename=new char [20];
struct rob
{char name [20], dolgn[20];
int tabl,data, oklad; };
rob A;
void __fastcall TForm1::FormCreate(TObject *Sender)
{ AnsiString fn=InputBox("³äêðèòòÿ ôàéëà ", "Ââåä³òü ³ìÿ ôàéëà", "rob.dat");
if (fn=="") {ShowMessage ("Âè íå âåëè äàí³"); return;}
strcpy(filename,fn.c_str());
f.open(filename, ios::out|ios::app|ios::binary);
f.clear();
if(!f) {ShowMessage ("Ïîìèëêà â³äêðèòòÿ ôàéëà"); return;}
f.close();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ f.open(filename, ios::out|ios::app|ios::binary);
f.clear();
if (!f) {ShowMessage ("Ïîìèëêà â³äêðèòòÿ ôàéëà");return;}
f.seekp(0,ios::end);
strcpy(A.dolgn, Edit4->Text.c_str());
strcpy(A.name, Edit2->Text.c_str());
A.data=StrToInt(Edit3->Text);
A.tabl=StrToInt(Edit1->Text);
A.oklad=StrToInt(Edit5->Text);
f.write((char*)&A,sizeof(A));
f.close();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Memo1->Clear();
f.open(filename,ios::out|ios::in|ios::binary);
f.clear();
if (!f)
{ShowMessage("Ïîìèëêà â³äêðèòòÿ ôàéëà"); return;}
while (f.read((char*)&A,sizeof(A)))
Memo1->Lines->Add(IntToStr(A.tabl)+" "+ AnsiString(A.name)+" "+
IntToStr(A.data)+" "+ AnsiString(A.dolgn)+" "+ IntToStr(A.oklad));
f.close();
}   
//---------------------------------------------------------------------------[/CPP]
msifeed
 Аватар для msifeed
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 10
04.06.2013, 22:10     Бинарные файлы.как найти? #4
коленко-код(исправь и допиши)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
struct Worker {
char name[51];
char age; //Чар может содержать числа 0..255. Думаю этого хватит
char destiny[101];
};
int worker_size = sizeof(Worker); //sizeof() находит размер класса в байтах(заранее скажу что не используй string)
Worker* wk; //Будущий массив с рабочими, пока-что просто скромный указатель
 
FILE* fl;
 
int main() {
 
//Открываем файл в режиме бинарного(b) чтения(r).
fl = fopen("имяфайла", "rb");
 
//Смещение указателя файла fseek(файл, кол-во байт, режим)  
//режимы: 0-от начала, 1-от текущей позиции, 2-от конца
fseek(fl, 0, 2);
// ftell(файл) - возвращает значение указателя в текущем файле(в нашем случае размер файла(тк указатель в конце))
int filesize = ftell(fl);
//Находим кол-во сотрудников(классов) в файле путем банального деления размеров
int num = filesize / worker_size;
fseek(fl, 0, 0);
 
//Создаем массив сотрудников, размером с num
wk = new Worker[num];
 
//Считываем файл
//fread(куда считывать, сколько байтов, сколько блоков(обычно 1), файл)
for (int i=0; i<num; i++) fread(wk[i], worker_size, 1, fl);
 
//тут можно уже делать что угодно. Например выкинуть всех кто в мемо
for (int i=0; i<num; i++)
  if (wk[i].age > 60) {//если сотрудник i старше 50, то берем его охранником
     wk[i].destiny = "Defender";
     Memo1->Lines->Add(wk[i].name + " going to be " + wk[i].destiny + ", I said.");
  }
  else if (wk[i].age < 30) {//иначе если сотрудник i младше 30, то берем его скаутом
     wk[i].destiny = "Scout";
     Memo1->Lines->Add(wk[i].name + " going to be " + wk[i].destiny + ", I said.");
  }
  else { //вообще иначе, эммм.... что-нибудь
     wk[i].destiny = "foo";
     Memo1->Lines->Add(wk[i].name + " has " + wk[i].destiny + "'d.");
  }
 
return 0;
}
Чтобы получить нужный ответ, прежде всего научись задавать правильные вопросы, затем поищи сам, а потом уже спрашивай... вежливо.

Жду благодарности с:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.06.2013, 22:15     Бинарные файлы.как найти? #5
Читайте из файлы структуры во временную структуру, сравнивайте поля, если совпали выводите эту структуру.
FriendIk
1 / 1 / 0
Регистрация: 16.12.2012
Сообщений: 59
04.06.2013, 22:29  [ТС]     Бинарные файлы.как найти? #6
Спасибо огромное! но у меня совсем другой код..нельзя как то туда вставить эту функцию(так как программа работает)? я полный 0 в программировании(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 22:47     Бинарные файлы.как найти?
Еще ссылки по теме:

C++ Бинарные файлы в С++
C++ Бинарные файлы
C++ Бинарные файлы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
msifeed
 Аватар для msifeed
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 10
04.06.2013, 22:47     Бинарные файлы.как найти? #7
Разберись в коде(обязательно. Он совсем простой), подумай на какие части его можно разбить. Читай методичку. Гугли ошибки что выскакивают.

Сейчас помочь не могу, тк. занят.
Yandex
Объявления
04.06.2013, 22:47     Бинарные файлы.как найти?
Ответ Создать тему
Опции темы

Текущее время: 09:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru