[Evaporation Project] Разработка

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#271 Сообщение 25.05.2009, 18:06

Я не пойму, там что переделывать-то? Си-соглашение (cdecl; после объявления функции) и пошел дальше. Логика есть? Или ты просто на дух не переносишь С++ :) ?

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#272 Сообщение 25.05.2009, 22:31

Так чтоли?

Код: Выделить всё

{
	cftAPI - by steamCooker
  Ported to Delphi by MOZGIII
}
unit cftAPI;

interface

const
  CFTAPI_API_LIB = 'cftAPI.dll';

{ MUST BE COMENTED
const
  CFTAPI_API = __declspec(dllexport);
}

{ WTF??  Error here
const
  CFTAPI_API = __declspec(dllimport);
}

const
  // log levels
  LOG_LEVEL_EVERYTHING = 0;
  LOG_LEVEL_DEBUG = 1;
  LOG_LEVEL_INFO = 2;
  LOG_LEVEL_ERROR = 3;
  LOG_LEVEL_TODO = 4;
  LOG_LEVEL_DISABLED = 5;

// init the logs, MUST be called prior to any other function
{CFTAPI_API} function CFTAPI_initLogs(logFile:PChar;	  // output log file or NULL
							   logStdout: Boolean): Integer; cdecl; external CFTAPI_API_LIB name 'CFTAPI_initLogs'; 	// print logs on stdout

// release the logs, to be called at the end
{CFTAPI_API} procedure CFTAPI_closeLogs(); cdecl; cdecl; external CFTAPI_API_LIB name 'CFTAPI_closeLogs';

// specify the log level
{CFTAPI_API} procedure CFTAPI_setLogLevel(level: Integer); cdecl; external CFTAPI_API_LIB name 'CFTAPI_setLogLevel';

// create an archive file,
{CFTAPI_API} function CFTAPI_createArchive(gcfPath: PChar;					// input gcf or ncf file
									outputPath: PChar;				// output folder
									loggerName: PChar;				// logger name as displayed in logs
									taskName: PChar;				// will be valuated with the current task name (for multitask applications)
									taskProgress: Cardinal): Integer; cdecl; external CFTAPI_API_LIB name 'CFTAPI_createArchive';	// will be valuated with the current task progress (for multitask applications)

// create an update file,
{CFTAPI_API} function CFTAPI_createUpdateFile(archivePath: PChar;			// input archive file
                  gcfPath: PChar;					// input gcf or ncf file
                  commonName: PChar;			// input ncf common sub folder name or NULL
                  outputPath: PChar;			// output folder
                  loggerName: PChar;			// logger name as displayed in logs
                  taskName: PChar;				// will be valuated with the current task name (for multitask applications)
                  taskProgress: Cardinal; // will be valuated with the current task progress (for multitask applications)
                  pleaseStop: Integer;		// pointer to an int to be set to 1 in order to ask the task to stop (for multitask applications)
                  securedUpdates: Integer): Integer; cdecl; external CFTAPI_API_LIB name 'CFTAPI_createUpdateFile';	  // set true to serialize GCF header after each update (slow)

// apply an update file,
{CFTAPI_API} function CFTAPI_applyUpdate(updatePath: PChar;				// input update file
								  gcfPath: PChar;					// gcf or ncf file to be updated
								  commonName: PChar;			// input ncf common sub folder name or NULL
								  decryptionKey: PChar;		// gcf/ncf decryption key if available and required or NULL
								  loggerName: PChar;			// logger name as displayed in logs
								  taskName: PChar;				// will be valuated with the current task name (for multitask applications)
								  taskProgress: Cardinal;	// will be valuated with the current task progress (for multitask applications)
								  pleaseStop: Integer;		// pointer to an int to be set to 1 in order to ask the task to stop (for multitask applications)
								  securedUpdates: Integer): Integer; cdecl; external CFTAPI_API_LIB name 'CFTAPI_applyUpdate';			// set true to serialize GCF header after each update (slow)

implementation

begin
end.
Проверь плиз на ошибки :) Просто раньше никогда сам не переводил...

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#273 Сообщение 26.05.2009, 16:46

{CFTAPI_API} procedure CFTAPI_closeLogs(); cdecl; cdecl; external CFTAPI_API_LIB name 'CFTAPI_closeLogs';
На "CFTAPI_closeLogs" cdecl; 2 раза не надо :wink: - одного достаточно. Delphi - вещь понятливая, 2 раза объяснять не надо :lol: .
function CFTAPI_createArchive(gcfPath: PChar; // input gcf or ncf file
outputPath: PChar; // output folder
loggerName: PChar; // logger name as displayed in logs
taskName: PChar; // will be valuated with the current task name (for multitask applications)
taskProgress: pCardinal): Integer; cdecl; external CFTAPI_API_LIB name 'CFTAPI_createArchive';
Здесь исправь ;) - в .h-файле же * стояла перед переменной.
{CFTAPI_API} function CFTAPI_createUpdateFile(archivePath: PChar; // input archive file
gcfPath: PChar; // input gcf or ncf file
commonName: PChar; // input ncf common sub folder name or NULL
outputPath: PChar; // output folder
loggerName: PChar; // logger name as displayed in logs
taskName: PChar; // will be valuated with the current task name (for multitask applications)
taskProgress: pCardinal; // will be valuated with the current task progress (for multitask applications)
pleaseStop: pInteger; // pointer to an int to be set to 1 in order to ask the task to stop (for multitask applications)
securedUpdates: Integer): Integer; cdecl; external CFTAPI_API_LIB name 'CFTAPI_createUpdateFile'; // set true to serialize GCF header after each update (slow)
То же самое, что и в предыдущем.

То же самое и к CFTAPI_applyUpdate -
taskProgress: pCardinal;
pleaseStop: pInteger;
должно быть.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#274 Сообщение 26.05.2009, 16:55

оки, попробую так скомплить)

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#275 Сообщение 26.05.2009, 17:02

И да, если небудет работать cdecl;, то попробуй stdcall; , хотя обычно С-функции без заранее объявленных соглашении по умолчанию используют С-соглашение (логично, правда? %) ).

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#276 Сообщение 26.05.2009, 18:02

:wink:

Добавлено спустя 25 минут 7 секунд:
Вот, исправленная рабочая версия) Я потестил даже немного...
[spoiler=""cftAPI.pas""]

Код: Выделить всё

{
	cftAPI - by steamCooker
  Ported to Delphi by MOZGIII
}
unit cftAPI;

interface

const
  CFTAPI_API_LIB = 'cftAPI.dll';

  // log levels
  LOG_LEVEL_EVERYTHING = 0;
  LOG_LEVEL_DEBUG = 1;
  LOG_LEVEL_INFO = 2;
  LOG_LEVEL_ERROR = 3;
  LOG_LEVEL_TODO = 4;
  LOG_LEVEL_DISABLED = 5;

// init the logs, MUST be called prior to any other function
{CFTAPI_API} function CFTAPI_initLogs(logFile:PChar;	  // output log file or NULL
							   logStdout: Boolean): Integer; cdecl; external CFTAPI_API_LIB name '?CFTAPI_initLogs@@YAHPAD_N@Z'; 	// print logs on stdout

// release the logs, to be called at the end
{CFTAPI_API} procedure CFTAPI_closeLogs(); cdecl; external CFTAPI_API_LIB name '?CFTAPI_closeLogs@@YAXXZ';

// specify the log level
{CFTAPI_API} procedure CFTAPI_setLogLevel(level: Integer); cdecl; external CFTAPI_API_LIB name '?CFTAPI_setLogLevel@@YAXH@Z';

// create an archive file,
{CFTAPI_API} function CFTAPI_createArchive(gcfPath: PChar;					// input gcf or ncf file
									outputPath: PChar;				// output folder
									loggerName: PChar;				// logger name as displayed in logs
									taskName: PChar;				// will be valuated with the current task name (for multitask applications)
									taskProgress: PCardinal): Integer; cdecl; external CFTAPI_API_LIB name '?CFTAPI_createArchive@@YAHPAD000PAK@Z';	// will be valuated with the current task progress (for multitask applications)

// create an update file,
{CFTAPI_API} function CFTAPI_createUpdateFile(archivePath: PChar;			// input archive file
                  gcfPath: PChar;					// input gcf or ncf file
                  commonName: PChar;			// input ncf common sub folder name or NULL
                  outputPath: PChar;			// output folder
                  loggerName: PChar;			// logger name as displayed in logs
                  taskName: PChar;				// will be valuated with the current task name (for multitask applications)
                  taskProgress: PCardinal; // will be valuated with the current task progress (for multitask applications)
                  pleaseStop: PInteger;		// pointer to an int to be set to 1 in order to ask the task to stop (for multitask applications)
                  securedUpdates: PInteger): Integer; cdecl; external CFTAPI_API_LIB name '?CFTAPI_createUpdateFile@@YAHPAD00000PAKPAHH@Z';	  // set true to serialize GCF header after each update (slow)

// apply an update file,
{CFTAPI_API} function CFTAPI_applyUpdate(updatePath: PChar;				// input update file
								  gcfPath: PChar;					// gcf or ncf file to be updated
								  commonName: PChar;			// input ncf common sub folder name or NULL
								  decryptionKey: PChar;		// gcf/ncf decryption key if available and required or NULL
								  loggerName: PChar;			// logger name as displayed in logs
								  taskName: PChar;				// will be valuated with the current task name (for multitask applications)
								  taskProgress: PCardinal;	// will be valuated with the current task progress (for multitask applications)
								  pleaseStop: PInteger;		// pointer to an int to be set to 1 in order to ask the task to stop (for multitask applications)
								  securedUpdates: PInteger): Integer; cdecl; external CFTAPI_API_LIB name '?CFTAPI_applyUpdate@@YAHPAD00000PAKPAHH@Z';			// set true to serialize GCF header after each update (slow)

implementation

begin
end.
[/spoiler]

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#277 Сообщение 27.05.2009, 12:18

Ну так что, работает? Если да, то принимай мои поздравления :) .

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#278 Сообщение 30.05.2009, 00:09

Начал разработку прграммы Games Manager, пришедшей на замену Client Cache Manager. Уже сделал передачу данных между прогой и сервером и ещё кое-что. Сейчас делаю отображение списка игр (почти как на сайте). Отсюда вопрос - как хотелось бы вам видеть список игр. Кодю я на своём любимом Delphi, и пока-что остановился на компоненте ListBox с добавленными иконками игр. Однако, мне ккажется выглядит немного убого. У кого-нибудь есть идеи как создать удобный список с картинками? Или не список... Кстати могу в приват скинуть линк на тестирование, при условии что вы будете отписывать обо всех багах.
Ах да, ещё кое-что - какие иконки лучше юзать? По размеру: 16х16/32х32/48х48 По содержанию: нагугленные, иконки, взятые из ярлыков создаваемых Steam или те, что висят на http://steampowered.com/ (которые 45 на сколько-то там)

Аватара пользователя
Vit_amiN
Супермодератор
Супермодератор
Сообщения: 2509
Зарегистрирован: 01.02.2007
Откуда: Over Old Hills
Благодарил (а): 15 раз
Поблагодарили: 91 раз

#279 Сообщение 30.05.2009, 01:51

MOZGIII писал(а):По размеру: 16х16/32х32/48х48 По содержанию: нагугленные, иконки, взятые из ярлыков создаваемых Steam или те, что висят на http://steampowered.com/ (которые 45 на сколько-то там)
16*16, стимовские.
Изображение

Мои русификаторы и другие полезные файлы здесь
ЗАПОМНИТЕ, ПОИСК — БЛИЖАЙШИЙ ПУТЬ К ИСТИНЕ!

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#280 Сообщение 30.05.2009, 04:49

И да, раз уж ты на Delphi кодишь (на меня не смотри %) ), то не лучше ль тебе пересесть на ListView co стилем LVS_REPORT ?

Добавлено спустя 3 минуты 19 секунд:
MOZGIII писал(а):Кстати могу в приват скинуть линк на тестирование, при условии что вы будете отписывать обо всех багах.
А много весит? Если не больше 3-х Мб, то давай ;) .

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#281 Сообщение 30.05.2009, 10:07

LVS_REPORT - что за зверь?
edit: понял, с утра туплю :) Но там (в ListBox) ведь совсем нет загловков... К тому-же картинки там очень удобно сделаны.

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#282 Сообщение 30.05.2009, 12:45

Слушай, а что должно быть быть вообще? Куда ложить exe-файл? (если есть определенное место) Что-то ничего, кроме Test Game, Left 4 Dead и Team Fortress 2, не показывает. Показывает просто 3 итемки на белом фоне интерфейса в стиле UCL.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#283 Сообщение 30.05.2009, 13:10

Да, примерно это... Только теперь (с этой минуты) показывается также иконка Left4Dead... щя кину новую ссылку :)
Вот, кинул

Добавлено спустя 10 минут 53 секунды:
$t@t!c_V()1D писал(а):UCL
Это что?

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#284 Сообщение 30.05.2009, 13:13

MOZGIII писал(а):показывается также иконка Left4Dead
Вау. Прикольно...иконка меняет дело! А то без иконки-то как-то не то было... Но ты добавил иконку для L4D и мир стал добрее, и солнышко ярче, и программа, наверное, уже наполовину сделана %) .

Шучу, как ты, наверное, уже уяснил :pardon: .

________________

O_O ИКОНКА! Она существует! И она скачивается? Или же она присутствует в проге? Или ещё какой-то способ?

Аватара пользователя
x_000
Полковник
Полковник
Сообщения: 4889
Зарегистрирован: 25.02.2008
Откуда: Deutsches Reich
Благодарил (а): 6 раз
Поблагодарили: 18 раз

#285 Сообщение 30.05.2009, 13:13

MOZGIII писал(а):Добавлено спустя 10 минут 53 секунды:
$t@t!c_V()1D писал(а):UCL
Это что?
Universal Content Launcher

Ответить Вложения 5