Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2010, 18:30   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
Счастье Открытие и чтение DAT файла. C++ в Delphi

Привет!
Уважаемые возникла необходимость открыть и прочитать данные находящиеся в dat файле.
Если исходник модуля который создаёт dat файл, и есть исходник программы которая так же читет файл.. проблемы 2:
1. программа криво читает файл..
2. Оба исходника на C++

Нужно перевести на Delphi
точнее надо узнать какие именно данные и в каком "формате" они там хранятся...(а программу reader я и сам уже додумаю=))

Вот файл где думаю все и крутиться:

CRank.h:
Код:


#ifndef CRANK_H
#define CRANK_H

#define RANK_VERSION 11

#include "stdafx.h"
#include "amxxmodule.h"

// *****************************************************
// class Stats
// *****************************************************

struct Stats {
	int hits;
	int shots;
	int damage;
	int hs;
	int tks;
	int kills;
	int deaths;
	int bodyHits[9]; ////////////////////
	
	// SiDLuke start
	int bPlants;
	int bExplosions;
	int bDefusions;
	int bDefused;
	// SiDLuke end :D

	Stats();
	void commit(Stats* a);
};

// *****************************************************
// class RankSystem
// *****************************************************

class RankSystem
{
public:
	class RankStats;
	friend class RankStats;
	class iterator;

	class RankStats : public Stats {
		friend class RankSystem;
		friend class iterator;
		RankSystem*	parent;
		RankStats*	next;
		RankStats*	prev;
		char*		unique;
		short int	uniquelen;
		char*		name;
		short int	namelen;
		int			score;
		int			id;
		RankStats( const char* uu, const char* nn,  RankSystem* pp );
		~RankStats();
		void setUnique( const char* nn  );
		inline void goDown() {++id;}
		inline void goUp() {--id;}
		inline void addStats(Stats* a) { commit( a ); }
	public:
		void setName( const char* nn  );
		inline const char* getName() const { return name ? name : ""; }
		inline const char* getUnique() const { return unique ? unique : ""; }
		inline int getPosition() const { return id; }
		inline int updatePosition( Stats* points ) {
			return parent->updatePos( this , points );
		}
		inline void MarkToDelete() {
			this->score = (1<<31);
		}
	};

private:
	RankStats* head;
	RankStats* tail;
	int rankNum;

	struct scoreCalc{
		AMX amx;
		void* code;
		int func;
		cell amxAddr1;
		cell amxAddr2;
		cell *physAddr1;
		cell *physAddr2;
	} calc;

	void put_before( RankStats* a, RankStats* ptr );
	void put_after( RankStats* a, RankStats* ptr );
	void unlink( RankStats* ptr );
	int updatePos( RankStats* r ,  Stats* s );
	
public:

	RankSystem();
	~RankSystem();

	void saveRank( const char* filename );
	bool loadRank( const char* filename );
	RankStats* findEntryInRank(const char* unique, const char* name );
	RankStats* findEntryInRankByUnique(const char* unique);
	RankStats* findEntryInRankByPos(int position);
	//bool loadCalc(const char* filename, char* error);
	inline int getRankNum( ) const { return rankNum; }
	void clear();
	//void unloadCalc();

	class iterator {
		RankStats* ptr;
	public:
		iterator(RankStats* a): ptr(a){}
		inline iterator& operator--() { ptr = ptr->prev; return *this;}
		inline iterator& operator++() {	ptr = ptr->next; return *this; }
		inline RankStats& operator*() {	return *ptr;}
		operator bool () { return (ptr != 0); }
	};

	inline iterator front() {  return iterator(head);  }
	inline iterator begin() {  return iterator(tail);  }
};


#endif
какие параметры из Dat читаются?
Вот прикладываю модуль и программу(Внутри папки)...
Помогите с c++ я в нем пака ни гугу..
Вложения
Тип файла: zip csx.zip (96.2 Кб, 13 просмотров)

Последний раз редактировалось Человек_Борща; 17.04.2010 в 19:08.
Человек_Борща вне форума Ответить с цитированием
Старый 17.04.2010, 21:41   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

мм кто-нибуть поможет? I need you help! Please!
Человек_Борща вне форума Ответить с цитированием
Старый 18.04.2010, 10:12   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Народ нужно лишь расшифровать вот это:
Код:
// *****************************************************
// class Stats
// *****************************************************

struct Stats {
	int hits;
	int shots;
	int damage;
	int hs;
	int tks;
	int kills;
	int deaths;
	int bodyHits[9]; ////////////////////
	
	// SiDLuke start
	int bPlants;
	int bExplosions;
	int bDefusions;
	int bDefused;
	// SiDLuke end :D

	Stats();
	void commit(Stats* a);
};

// *****************************************************
// class RankSystem
// *****************************************************

class RankSystem
{
public:
	class RankStats;
	friend class RankStats;
	class iterator;

	class RankStats : public Stats {
		friend class RankSystem;
		friend class iterator;
		RankSystem*	parent;
		RankStats*	next;
		RankStats*	prev;
		char*		unique;
		short int	uniquelen;
		char*		name;
		short int	namelen;
		int			score;
		int			id;
		RankStats( const char* uu, const char* nn,  RankSystem* pp );
		~RankStats();
		void setUnique( const char* nn  );
		inline void goDown() {++id;}
		inline void goUp() {--id;}
		inline void addStats(Stats* a) { commit( a ); }
	public:
		void setName( const char* nn  );
		inline const char* getName() const { return name ? name : ""; }
		inline const char* getUnique() const { return unique ? unique : ""; }
		inline int getPosition() const { return id; }
		inline int updatePosition( Stats* points ) {
			return parent->updatePos( this , points );
		}
		inline void MarkToDelete() {
			this->score = (1<<31);
		}
	};
Человек_Борща вне форума Ответить с цитированием
Старый 18.04.2010, 10:22   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

struct, насколько я помню = record

Открываете как file of stats
потом BlockRead
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 18.04.2010, 12:35   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

ну уже более мение что-то , СПАСИБО!
Но увы это не сильно поможет если я незнаю что за данные хранятся в файле, с каким типом, и в каких переменных.
Человек_Борща вне форума Ответить с цитированием
Старый 18.04.2010, 12:50   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
struct Stats {
	int hits;
	int shots;
	int damage;
	int hs;
	int tks;
	int kills;
	int deaths;
	int bodyHits[9]; ////////////////////
	
	// SiDLuke start
	int bPlants;
	int bExplosions;
	int bDefusions;
	int bDefused;
	// SiDLuke end :D

	Stats();
	void commit(Stats* a);
};
Значит это тебе ни о чем не говорит? О_о
Google => "int в C++" смотришь размер типа, подбираешь подходящий в delphi. Строишь запись
stats = record
blablabla = Type;
blablabla
...
End;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение из *.dat Klyaksa Общие вопросы по Java, Java SE, Kotlin 6 13.05.2010 03:06
Чтение из файла Delphi VadEr Помощь студентам 2 25.10.2009 17:29
чтение файла Delphi world12_tk Помощь студентам 1 07.10.2009 08:16
BlockRead -чтение dat файла element Общие вопросы Delphi 2 15.06.2009 14:21
Открытие файла на чтение функция fopen bigturtle Общие вопросы C/C++ 4 28.01.2009 16:08