Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6705
Комментариев на сайте: 651
Новый юзер: RavBroaft



Последние комментарии
c
Rodneyhef прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Zauważże, czym cechują się kredyty na sześcdziesięciu dni. Jako co zwrócić uwagę podczas asortymentu oferty? Które firmy użyczają chwilówek za taki czas? Sprawdź! [url=https://chwilowki-pozyczka.pl/]chwilówki[/url] [url=https://chwilowki-pozyczka.pl/chwilowki-online]chwilówki online[/url] [url=https://chwilowki-pozyczka.pl/pozyczki-na-raty]pożyczki ratalne[/url] [url=https://chwilowki-pozyczka.pl/kredyty-gotowkowe]kredyty gotówkowe[/url] Zdecydowana większość pożyczek krótkoterminowych udzielana jest od okres nie zaakceptować dłuższy niźli dwa miesiące. Krótki słowo spłaty wydaje się być charakterystyczny na rzecz tego rodzaju wytworów finansowych. Firmy pożyczkowe wprowadziły także zastrzeżenia, skutkujące tym, że nie każdy klient będzie mógł momentalnie zaciągnąć wzięcie pożyczki na 60 dni. W poniższym artykule podpowiadamy, na jak zwrócić uwagę, postanawiając się pod ten typ dofinansowania, na czym polegają opisane ograniczenia, oraz pokazujemy, które obecne na rynku firmy użyczają pożyczek dzięki 60 dni. chwilowki-pozyczka.pl Termin kredyty jest jednym z kluczowych składników mających bezpośredni wpływ jako całkowite koszty zobowiązania. Alternatywa krótszego czy dłuższego sezonu ma przełożenie na wysokość RRSO, innymi słowy rzeczywistej rocznej stopy oprocentowanie informującej nas w stosunku procentowym o kosztach związanych z pożyczką. Jest to pierwszy element, na który trzeba zwrócić szczególną uwagę w chwili wyboru możliwości. Drugim elementem jest uważna ocena spersonalizowanych możliwości kredytowych, co koniecznie musi towarzyszyć zaciąganiu jakiegokolwiek zobowiązania. Być może będziemy potrzebować produktu finansowego, którego spłata wydaje się znacznie dłuższa. Wówczas winniśmy zdecydować się jako pożyczki od raty. Warto również stwierdzić o aplikowanych przez spółki pożyczkowe ograniczeniach, wynikających spośród realizacji strategii ryzyka. Ochraniając się zanim niewypłacalnością pożyczkobiorców, instytucje finansowe przedłożyły szereg wielu ograniczeń, oddanych w szczególności dla osób nowych odbiorców. Ci pożyczkobiorcy, którzy zaciągają chwilówkę na raz 1 w podanej firmie, niejednokrotnie nie mogą liczyć na termin dłuższy niźli 30 dni. Poza tym wiążą ograniczenia szczególne dla kredytów krótkoterminowych. Przemówienie między innymi na temat weryfikacji petentów w charakteryzujących się ogromną popularnością rejestrach dłużników, ukończenie 21. roku egzystencji czy identyfikacja maksymalnej poziomie pożyczki. Pożądane byłoby podkreślić, hdy znaczna część przedsiębiorstw nie udziela pożyczek o dłuższym okresie w ogóle, co ponadto nie jest rezultatem wprowadzenia ograniczeń, a wynika po prostu wraz z oferty.
dealrattKi прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Это действительно радует меня. --- Бесподобное сообщение скачать fifa, скачать фифа а также [url=http://15fifa.ru/novosti-fifa-15]fifa 15 последние новости[/url] скачать фифа

Информация о версии файла

Признайтесь, у каждого из нас когда-либо возникало желание вывести в своей программе информацию о версии файла. Неважно, в заголовок ли окна, или в файл журнала. Некоторые просто пишут версию вручную, а некоторые используют встроенную в файлы формата PE возможность заполнять блок информации о версии файла. Я расскажу о втором способе.

Информация о версии файла хранится в виде набора строк, которые можно получать через специальные функции Windows API.

Для начала необходимо узнать размер блока. Это требуется для того, чтобы выделить буфер требуемого размера для хранения этого блока. Тут нам поможет вот такая процедура:

	GetFileVersionInfoSize(Filename: pchar, var BuffSize: cardinal);
	
Здесь, Filename - имя файла, содержащего версию файла, а BuffSize - переменная, в которую будет записано количество байт, занимаемых информацией о версии. Функция запишет в переменную BuffSize число меньшее 1, если информация о версии отсутствует или произошла ошибка.

После этого, выделив буфер, мы запрашиваем сам блок информации о версии файла.
	VIBuff := AllocMem(VISize);
	GetFileVersionInfo(pchar(Filename),cardinal(0),VISize,VIBuff);
	
Но это еще не все. Информация о версии является многоязычным ресурсом, поэтому следует узнать список языков, которые поддерживаются версией файла.
	  VerQueryValue(VIBuff,'\VarFileInfo\Translation',Trans,buffsize);
	  if buffsize >= 4 then
	  begin
	    temp:=0;
	    StrLCopy(@temp, pchar(Trans), 2);
	    LangCharSet:=IntToHex(temp, 4);
	    StrLCopy(@temp, pchar(Trans)+2, 2);
	    FLanguageInfo := LangCharSet+IntToHex(temp, 4);
	  end else raise EReadError.Create('Invalid language info in file '+Filename);
	  
Выяснив язык, запрашиваем информацию, которая требуется при помощи вот такой функции:
	  function GetStringValue(const From: string): string;
	  begin
	    VerQueryValue(VIBuff,pchar('\StringFileInfo\'+LanguageInfo+'\'+From),
	                  pointer(str), buffsize);
	    if buffsize > 0 then Result := str else Result := 'n/a';
	  end;
	  
В качестве входного параметра ей задается символическое имя записи в блоке информации о версии файла в виде строковой константы. Константы могут быть следующими: "CompanyName", "FileDescription", "FileVersion", "InternalName", "LegalCopyright", "OriginalFilename", "ProductName", "ProductVersion", "Comments" и они соответствуют одноименным полям блока информации о версии.

Вот и все, что следует знать для того, чтобы уметь получать информацию о версии файла. Разумеется, я рассказал далеко не все и совершенно не углублялся в данную технологию. Могу лишь заметить, что с помощью этой части Windows API можно делать множество интересных вещей.

Текст модуля компонента
	unit gsFileVersionInfo;

	//**! ------------------------------------------------------------------
	//**! This unit is a part of GSPackage project (Gregory Sitnin's Delphi 
	//**! Components Package).
	//**! ------------------------------------------------------------------
	//**! You may use or redistribute this unit for your purposes while
	//**! unit's code and this copyright notice is unchanged and exists.
	//**! ------------------------------------------------------------------
	//**! (c) Gregory Sitnin, 2001-2002. All rights reserved.
	//**! ------------------------------------------------------------------

	interface

	uses
	  Windows, Messages, SysUtils, Classes;

	type
	  TgsFileVersionInfo = class(TComponent)
	  private
	    FFilename: TFilename;
	    FVersionInfoSize: cardinal;
	    FFileVersion: string;
	    FFileDescription: string;
	    FInternalName: string;
	    FOriginalFilename: string;
	    FCompanyName: string;
	    FProductVersion: string;
	    FProductName: string;
	    FLegalCopyright: string;
	    FLanguageInfo: string;
	    FComments: string;
	    procedure SetFilename(const Value: TFilename);
	    { Private declarations }
	  protected
	    { Protected declarations }
	    property VersionInfoSize: cardinal read FVersionInfoSize;
	    procedure LoadFromFile;
	    procedure ClearAll;
	  public
	    { Public declarations }
	  published
	    { Published declarations }
	    function GetBuildOnly: string;
	    property Filename: TFilename read FFilename write SetFilename;
	    property LanguageInfo: string read FLanguageInfo;
	    property CompanyName: string read FCompanyName;
	    property FileDescription: string read FFileDescription;
	    property FileVersion: string read FFileVersion;
	    property InternalName: string read FInternalName;
	    property LegalCopyright: string read FLegalCopyright;
	    property OriginalFilename: string read FOriginalFilename;
	    property ProductName: string read FProductName;
	    property ProductVersion: string read FProductVersion;
	    property Comments: string read FComments;
	  end;

	procedure Register;

	implementation
	uses dialogs;
	procedure Register;
	begin
	  RegisterComponents('GSPackage', [TgsFileVersionInfo]);
	end;

	{ TgsFileVersionInfo }

	procedure TgsFileVersionInfo.ClearAll;
	begin
	  FVersionInfoSize: -1;
	  FCompanyName := '';
	  FFileDescription := '';
	  FFileVersion := '';
	  FInternalName := '';
	  FLegalCopyright := '';
	  FOriginalFilename := '';
	  FProductName := '';
	  FProductVersion := '';
	  FComments := '';
	end;

	function TgsFileVersionInfo.GetBuildOnly: string;
	var p: integer;
	    s: string;
	begin
	  s := FileVersion;
	  p := LastDelimiter('.',s);
	  Result := copy(s,p+1,length(s)-p);
	end;

	procedure TgsFileVersionInfo.LoadFromFile;
	var VISize:   cardinal;
	    VIBuff:   pointer;
	    trans:    pointer;
	    buffsize: cardinal;
	    temp: integer;
	    str: pchar;
	    LangCharSet: string;

	  function GetStringValue(const From: string): string;
	  begin
	    VerQueryValue(VIBuff,pchar('\StringFileInfo\'+LanguageInfo+'\'+From), pointer(str),
	                  buffsize);
	    if buffsize > 0 then Result := str else Result := 'n/a';
	  end;

	begin
	  ClearAll;
	  VIBuff := nil;
	  if not fileexists(Filename) then raise EFilerError.Create('File not found: '+Filename);
	  VISize := GetFileVersionInfoSize(pchar(Filename),buffsize);
	  FVersionInfoSize := VISize;
	  if VISize < 1 then raise EReadError.Create('Invalid version info record in file '+Filename);
	  VIBuff := AllocMem(VISize);
	  GetFileVersionInfo(pchar(Filename),cardinal(0),VISize,VIBuff);

	  VerQueryValue(VIBuff,'\VarFileInfo\Translation',Trans,buffsize);
	  if buffsize >= 4 then
	  begin
	    temp:=0;
	    StrLCopy(@temp, pchar(Trans), 2);
	    LangCharSet:=IntToHex(temp, 4);
	    StrLCopy(@temp, pchar(Trans)+2, 2);
	    FLanguageInfo := LangCharSet+IntToHex(temp, 4);
	  end else raise EReadError.Create('Invalid language info in file '+Filename);

	  FCompanyName := GetStringValue('CompanyName');
	  FFileDescription := GetStringValue('FileDescription');
	  FFileVersion := GetStringValue('FileVersion');
	  FInternalName := GetStringValue('InternalName');
	  FLegalCopyright := GetStringValue('LegalCopyright');
	  FOriginalFilename := GetStringValue('OriginalFilename');
	  FProductName := GetStringValue('ProductName');
	  FProductVersion := GetStringValue('ProductVersion');
	  FComments := GetStringValue('Comments');

	  FreeMem(VIBuff,VISize);
	end;

	procedure TgsFileVersionInfo.SetFilename(const Value: TFilename);
	begin
	  FFilename := Value;
	  LoadFromFile;
	end;

	end.

	

Вот и всё, Удачи!

как тут
Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 20 Июля 2015
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.