Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

Информация о файле   Найти похожие ветки 

 
PSPF2003 ©   (2006-07-28 21:14) [40]


> Что-то тут нечисто.

В смысле тут не чисто? Тут как раз все чисто. Я тебе просто говорил, что нельзя тупо копировать код. Для того чтобы вывести систему из строя (Windows) достаточно изменить настройки в реестре , а сделать это можно всего несколькими строчками кода.


 
Мефисто   (2006-07-28 21:19) [41]


> PSPF2003 ©   (28.07.06 21:14) [40]


Про не чисто, это мой ответ на Chort  ©   (28.07.06 21:03) [38]

А про копирование кода я тебя отлично понял :)


 
PSPF2003 ©   (2006-07-28 21:23) [42]


> Мефисто

Извени, я не посмотрел кто написал ответ :)


 
Chort ©   (2006-07-28 21:56) [43]

короче говоря нужно набирать руками!


 
Мефисто   (2006-07-28 22:03) [44]


> Chort ©   (28.07.06 21:56) [43]


тебе срочно нужен букварь по дельфи.

тебе выше выложили полноценный готовый юнит.

У себя в проекте создай новый юнит. Удали из него весь текст, а в него вставь код от Шпиона. Только потом в: unit <имя твоего юнита>;
Далее в основном модуле проекта в uses пропиши этот юнит и работай с ним без проблем.


 
Chort ©   (2006-07-29 11:57) [45]

Коректно ли будет подключить Opendialog1 и написать

procedure TForm1.Button1Click(Sender: TObject);
var
  A: TVerInfoRes;
begin
if OpenDialog1.Execute then begin

A := TVerInfoRes.Create(OpenDialog1.FileName);
end;
try
 DBEDIT1.Text := A.GetPreDefKeyString(viCompanyName);
  DBEDIT2.Text := A.GetPreDefKeyString(viFileDescription);
  DBEDIT3.Text := A.GetPreDefKeyString(viFileVersion);
  DBEDIT4.Text := A.GetPreDefKeyString(viInternalName);
   DBEDIT5.Text := A.GetPreDefKeyString(viLegalCopyright);
    DBEDIT6.Text := A.GetPreDefKeyString(viLegalTrademarks);
     DBEDIT7.Text := A.GetPreDefKeyString(viOriginalFilename);
      DBEDIT8.Text := A.GetPreDefKeyString(viProductName);
       DBEDIT9.Text := A.GetPreDefKeyString(viProductVersion);
        DBEDIT10.Text := A.GetPreDefKeyString(viComments);
finally
  A.Free;
end;

Компилится и работает нормально, но показывает один Warning : ""Variable "A" might not have been initialized"", и показывает строку
DBEDIT1.Text := A.GetPreDefKeyString(viCompanyName);.
Я понимаю, что Warning это не Error , и сним можно жить , но можно ли этого избежать?


 
PSPF2003 ©   (2006-07-29 12:00) [46]


> DBEDIT1.Text

А почему не DBGRID ?


 
Chort ©   (2006-07-29 12:17) [47]

В DBGrid1 информация будет вставлятся после того, как можно будет просмотреть и отредактировать(если нужно) данные в DBEdit-ах. Ну а после программа действительно показывает инфу в виде сетки DBGrid1. Не пойму как убрать  Warning ?


 
PSPF2003 ©   (2006-07-29 12:27) [48]

У меня все работает.

procedure TForm1.Button2Click(Sender: TObject);
var
 a : TVerInfoRes;
begin
 if not OpenDialog1.Execute then Exit;
 a := TVerInfoRes.Create(OpenDialog1.FileName);
 try
   EDIT1.Text := A.GetPreDefKeyString(viCompanyName);
   EDIT2.Text := A.GetPreDefKeyString(viFileDescription);
   EDIT3.Text := A.GetPreDefKeyString(viFileVersion);
   EDIT4.Text := A.GetPreDefKeyString(viInternalName);
   EDIT5.Text := A.GetPreDefKeyString(viLegalCopyright);
   EDIT6.Text := A.GetPreDefKeyString(viLegalTrademarks);
   EDIT7.Text := A.GetPreDefKeyString(viOriginalFilename);
   EDIT8.Text := A.GetPreDefKeyString(viProductName);
   EDIT9.Text := A.GetPreDefKeyString(viProductVersion);
   EDIT10.Text := A.GetPreDefKeyString(viComments);
 finally
   a.Free;
 end;

end;


 
Chort ©   (2006-07-29 13:01) [49]

to PSPF2003
У меня тоже, но показывает warning!


 
Chort ©   (2006-07-29 13:03) [50]

Кстати, что означает [17] ?


 
PSPF2003 ©   (2006-07-29 13:10) [51]

Там же написанно MSDN (Microsoft Developers Network)


 
Chort ©   (2006-07-29 13:13) [52]

Ошибку исправил!Средствами OpenDialog1 можно также увидеть путь к файлу в DBEdit ?


 
PSPF2003 ©   (2006-07-29 13:20) [53]

А по поводу Warning могу только сказать, IMXO ты судя по [32] хм… что-то намудрил.


 
PSPF2003 ©   (2006-07-29 13:22) [54]


> Средствами OpenDialog1 можно также увидеть путь к файлу
> в DBEdit ?

Еще раз только по понятнее.


 
KilkennyCat ©   (2006-07-29 15:09) [55]

> [53] PSPF2003 ©   (29.07.06 13:20)

намудрил использование переменной даже если опендиалог не отработает.


 
PSPF2003 ©   (2006-07-29 16:10) [56]


> KilkennyCat ©


> намудрил использование переменной даже если опендиалог не
> отработает.

Хм.. если ты про [48]
Ессли опендиалог не отработает произойдет выход. Там же написанно.


 
Chort ©   (2006-07-29 20:30) [57]

to KilkennyCat and PSPF2003
Warning исправил, все в порядке. А насчет пути к файлу я имею в виду что когда я указываю OpenDialog1 ом файл, с которого хочу считать инфу, то можноли еще и както записать  путь этого файла в мою программу?


 
Шпиён   (2006-07-29 20:45) [58]


> Chort ©   (29.07.06 20:30) [57]


>  когда я указываю OpenDialog1 ом файл, с которого хочу считать
> инфу, то можноли еще и както записать  путь этого файла
> в мою программу?

Без "хакерских методов" нельзя -) Сохраняй в реестре или ini-файле.


 
Chort ©   (2006-07-29 20:54) [59]

to Шпиён
Спасибо за код!
Мне не нужно в реестре. Сначала нужно этот путь(адрес) влепить в DBEdit а потом оно само уже сохранится в базе данных Access(ну и будет отображаться в DBGrid1).Главная проблема- как считать этот путь  файла и отобразить!


 
Шпиён   (2006-07-29 23:06) [60]


> Главная проблема- как считать этот путь  файла и отобразить!

Сделай мааааленький эксперимент -)

if OpenDialog1.Execute then
   begin
       Label1.Caption:=GetCurrentDir;
       Label2.Caption:=ExtractFilePath(OpenDialog1.FileName);
       Label3.Caption:=OpenDialog1.FileName;
   end;



 
Шпиён   (2006-07-29 23:09) [61]

Или чуть побольше -)

if OpenDialog1.Execute then
   begin
       Label1.Caption:=GetCurrentDir;
       Label2.Caption:=ExtractFilePath(OpenDialog1.FileName);
       Label3.Caption:=OpenDialog1.FileName;
       Label4.Caption:=ExtractFileDir(OpenDialog1.FileName);
       Label5.Caption:=ExtractFileName(OpenDialog1.FileName);
   end;


 
KilkennyCat ©   (2006-07-29 23:33) [62]

> [56] PSPF2003 ©   (29.07.06 16:10)

нет, я про выше. [45]


 
Chort ©   (2006-07-29 23:45) [63]

to Шпиён
Сделал по второму примеру
procedure TInfoForm.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog3.Execute then

      Label1.Caption:=GetCurrentDir;
      Label2.Caption:=ExtractFilePath(OpenDialog3.FileName);
      Label3.Caption:=OpenDialog3.FileName;
      Label4.Caption:=ExtractFileDir(OpenDialog3.FileName);
      Label5.Caption:=ExtractFileName(OpenDialog3.FileName);
  end;

Никаких изменений вообще(как была надпись Label1,...  так и осталось).
Я вот посмотрел по свойствам файлов, ведь существует еще такой пункт как Язык.


 
Шпиён   (2006-07-29 23:51) [64]


> Никаких изменений вообще(как была надпись Label1,...  так
> и осталось).

Что-то тут не чисто -))))


 
Chort ©   (2006-07-30 00:01) [65]


> Что-то тут не чисто -))))

Гдето я это слышал
Ну я не знаю почемя не отображает(что собственно должно показыватся).
На форме есть кнопка, по нажатию которой написано
procedure TInfoForm.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog3.Execute then

     Label1.Caption:=GetCurrentDir;
     Label2.Caption:=ExtractFilePath(OpenDialog3.FileName);
     Label3.Caption:=OpenDialog3.FileName;
     Label4.Caption:=ExtractFileDir(OpenDialog3.FileName);
     Label5.Caption:=ExtractFileName(OpenDialog3.FileName);
 end;

Перед этим по нажатию этой же кнопки для DBEdit -ов я писал
procedure TInfoForm.SpeedButton1Click(Sender: TObject);
var
a : TVerInfoRes;
begin
if not OpenDialog3.Execute then Exit;
a := TVerInfoRes.Create(OpenDialog3.FileName);
try
  DBEDIT1.Text := A.GetPreDefKeyString(viCompanyName);
  DBEDIT2.Text := A.GetPreDefKeyString(viFileDescription);
  DBEDIT3.Text := A.GetPreDefKeyString(viFileVersion);
  DBEDIT4.Text := A.GetPreDefKeyString(viInternalName);
  DBEDIT5.Text := A.GetPreDefKeyString(viLegalCopyright);
  DBEDIT6.Text := A.GetPreDefKeyString(viLegalTrademarks);
  DBEDIT7.Text := A.GetPreDefKeyString(viOriginalFilename);
  DBEDIT8.Text := A.GetPreDefKeyString(viProductName);
  DBEDIT9.Text := A.GetPreDefKeyString(viProductVersion);
  DBEDIT10.Text := A.GetPreDefKeyString(viComments);
finally
  a.Free;

end;
end;

Ну и отображалась информация соответственно правильно


 
Шпиён   (2006-07-30 00:23) [66]

А теперь сравни свой код с примером -)
В примере:

if OpenDialog1.Execute then
 begin
.................
  end;

а у тебя?

Перепиши примерно так:

procedure TInfoForm.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog3.Execute then
begin
    Label1.Caption:=GetCurrentDir;
    Label2.Caption:=ExtractFilePath(OpenDialog3.FileName);
    Label3.Caption:=OpenDialog3.FileName;
    Label4.Caption:=ExtractFileDir(OpenDialog3.FileName);
    Label5.Caption:=ExtractFileName(OpenDialog3.FileName);
end;
end;

И не забудь в диалоге файл выбрать -)


 
Chort ©   (2006-07-30 12:02) [67]

to Шпиён
Пошло, работает. Я думаю, что мне достаточто будет второй и третьей строки  
Label2.Caption:=ExtractFilePath(OpenDialog3.FileName);
Label3.Caption:=OpenDialog3.FileName;

, где указаны путь к папке проги и путь к нужному мне файлу.
Теперь код выглядит преблизительно так
procedure TInfoForm.SpeedButton1Click(Sender: TObject);
var
a : TVerInfoRes;
begin
if not OpenDialog3.Execute then Exit;
a := TVerInfoRes.Create(OpenDialog3.FileName);
try
  DBEDIT1.Text := A.GetPreDefKeyString(viCompanyName);
  DBEDIT2.Text := A.GetPreDefKeyString(viFileDescription);
  DBEDIT3.Text := A.GetPreDefKeyString(viFileVersion);
  DBEDIT4.Text := A.GetPreDefKeyString(viInternalName);
  DBEDIT5.Text := A.GetPreDefKeyString(viLegalCopyright);
  DBEDIT6.Text := A.GetPreDefKeyString(viLegalTrademarks);
  DBEDIT7.Text := A.GetPreDefKeyString(viOriginalFilename);
  DBEDIT8.Text := A.GetPreDefKeyString(viProductName);
  DBEDIT9.Text := A.GetPreDefKeyString(viProductVersion);
   DBEDIT10.Text := A.GetPreDefKeyString(viComments);
   DBEDIT11.Text:=ExtractFilePath(OpenDialog3.FileName);
   DBEDIT12.Text:=OpenDialog3.FileName;
DBEDIT13.Text:=ExtractFileName(OpenDialog3.FileName);
finally
  a.Free;
end;
end;

Оказывается я думал что если назначу поля вывода результата DBEDIT9, DBEDIT10,.....   и подключу необходимые ресурсы и поля, то эта информация будет автоматически заносится в мою таблицу. А вот и нет. При выборе файла информация действительно отображается в DBEdit -ах , но при попытке отредактировать ее (просто при щелчке мыши в поле DBEdit) она просто исчезает и не сохраняется. Но решил проблему так : просто при вызове процедуры
procedure TInfoForm.SpeedButton1Click(Sender: TObject);
я добавляю строку в мою DBGrid1:
procedure TInfoForm.SpeedButton1Click(Sender: TObject);
var
a : TVerInfoRes;
begin
DataModule1.BookTable.Insert;
if not OpenDialog3.Execute then Exit;
a := TVerInfoRes.Create(OpenDialog3.FileName);
try
  DBEDIT1.Text := A.GetPreDefKeyString(viCompanyName);
  DBEDIT2.Text := A.GetPreDefKeyString(viFileDescription);
  DBEDIT3.Text := A.GetPreDefKeyString(viFileVersion);
  DBEDIT4.Text := A.GetPreDefKeyString(viInternalName);
  DBEDIT5.Text := A.GetPreDefKeyString(viLegalCopyright);
  DBEDIT6.Text := A.GetPreDefKeyString(viLegalTrademarks);
  DBEDIT7.Text := A.GetPreDefKeyString(viOriginalFilename);
  DBEDIT8.Text := A.GetPreDefKeyString(viProductName);
  DBEDIT9.Text := A.GetPreDefKeyString(viProductVersion);
   DBEDIT10.Text := A.GetPreDefKeyString(viComments);
   DBEDIT11.Text:=ExtractFilePath(OpenDialog3.FileName);
   DBEDIT12.Text:=OpenDialog3.FileName;
finally
  a.Free;
end;
end;

Спасибо Вам! Хотел еще спросить можно ли извлечь и Язык(программы)?


 
PSPF2003 ©   (2006-07-30 12:51) [68]

Хм.. Может сделать за тебя программу ?


 
Шпиён   (2006-07-30 15:12) [69]


> Спасибо Вам! Хотел еще спросить можно ли извлечь и Язык(программы)?

Можно. Но для этого придётся немного доработать класс TVerInfoRes - добавить  метод для извлечения LangID и, при желании, CharSetID из TransTable
           LangID := LoWord(TransTable^);
           CharSetID := HiWord(TransTable^);
По LangID можно определить язык (программы) .


 
Chort ©   (2006-08-01 12:25) [70]

to Шпиён
Значит написать следующее
unit Info;

interface
uses SysUtils, WinTypes, Dialogs, Classes;
type
{ define a generic exception class for version info, and an exception
  to indicate that no version info is available. }
EVerInfoError   = class(Exception);
ENoVerInfoError = class(Exception);
eNoFixeVerInfo  = class(Exception);

// define enum type representing different types of version info
TVerInfoType =
  (viCompanyName,
   viFileDescription,
   viFileVersion,
   viInternalName,
   viLegalCopyright,
   viLegalTrademarks,
   viOriginalFilename,
   viProductName,
   viProductVersion,
   viComments,
  LangID,
   CharSetID
);

const

// define an array constant of strings representing the pre-defined
// version information keys.
VerNameArray: array[viCompanyName..CharSetID] of String[20] =
("CompanyName",
 "FileDescription",
 "FileVersion",
 "InternalName",
 "LegalCopyright",
 "LegalTrademarks",
 "OriginalFilename",
 "ProductName",
 "ProductVersion",
 "Comments",
 "LangID",
 "CharSetID"
);


а куда
LangID := LoWord(TransTable^);
          CharSetID := HiWord(TransTable^);
   ?


 
Шпиён   (2006-08-08 02:10) [71]


> Chort ©   (01.08.06 12:25) [70]
> to Шпиён
> Значит написать следующее

Неу ужжж...вот ЭТОГО делать не надо.
Класс я тебе доработал, разбирайся (см. следующий пост)


 
Шпиён   (2006-08-08 02:12) [72]


{
Copyright © 1999 by Delphi 5 Developer"s Guide - Xavier Pacheco and Steve Teixeira
}
//Слегка доработан напильником
unit VerInfo;
interface
uses SysUtils, WinTypes, Dialogs, Classes;
type
 { define a generic exception class for version info, and an exception
   to indicate that no version info is available. }
 EVerInfoError   = class(Exception);
 ENoVerInfoError = class(Exception);
 eNoFixeVerInfo  = class(Exception);
 // define enum type representing different types of version info
 TVerInfoType =
   (viCompanyName,
    viFileDescription,
    viFileVersion,
    viInternalName,
    viLegalCopyright,
    viLegalTrademarks,
    viOriginalFilename,
    viProductName,
    viProductVersion,
    viComments);
const
 // define an array constant of strings representing the pre-defined
 // version information keys.
 VerNameArray: array[viCompanyName..viComments] of String[20] =
 ("CompanyName",
  "FileDescription",
  "FileVersion",
  "InternalName",
  "LegalCopyright",
  "LegalTrademarks",
  "OriginalFilename",
  "ProductName",
  "ProductVersion",
  "Comments");
type
 // Define the version info class
 TVerInfoRes = class
 private
   Handle            : DWord;
   Size              : Integer;
   RezBuffer         : String;
   TransTable        : PLongint;
   FixedFileInfoBuf  : PVSFixedFileInfo;
   FFileFlags        : TStringList;
   FFileName         : String;
   procedure FillFixedFileInfoBuf;
   procedure FillFileVersionInfo;
   procedure FillFileMaskInfo;
 protected
   function GetFileVersion   : String;
   function GetProductVersion: String;
   function GetFileOS        : String;
//Добавим методы:
//Получим  язык
   function GetFileLang      : String;
//Получим LanguageID
   function GetLangID        : String;
//Получим кодовую страницу
   function GetCharSet       : String;
 public
   constructor Create(AFileName: String);
   destructor Destroy; override;
   function GetPreDefKeyString(AVerKind: TVerInfoType): String;
   function GetUserDefKeyString(AKey: String): String;
   property FileVersion    : String read GetFileVersion;
   property ProductVersion : String read GetProductVersion;
   property FileFlags      : TStringList read FFileFlags;
   property FileOS         : String read GetFileOS;
//Добавим свойства
   property LangID         : String read GetLangID;
   property Language       : String read GetFileLang;
   property CodePage       : String read GetCharSet;
 end;


 
Шпиён   (2006-08-08 02:13) [73]

продолжение:

implementation
uses Windows;
const
 // strings that must be fed to VerQueryValue() function
 SFInfo                = "\StringFileInfo\";
 VerTranslation: PChar = "\VarFileInfo\Translation";
 FormatStr             = "%s%.4x%.4x\%s%s";
constructor TVerInfoRes.Create(AFileName: String);
begin
 FFileName := aFileName;
 FFileFlags := TStringList.Create;
 // Get the file version information
 FillFileVersionInfo;
 //Get the fixed file info
 FillFixedFileInfoBuf;
 // Get the file mask values
 FillFileMaskInfo;
end;
destructor TVerInfoRes.Destroy;
begin
 FFileFlags.Free;
end;
//Получим LanguageID
function TVerInfoRes.GetLangID : String;
begin
   Result:=  IntToHex(LoWord(TransTable^),4);
end;
//Получим кодовую страницу
function TVerInfoRes.GetCharSet : String;
begin
   Result:=  IntToStr(HiWord(TransTable^));
end;
//Получим  язык
function TVerInfoRes.GetFileLang : String;
begin
SetLength(Result,100);
SetLength(Result, GetLocaleInfo(
   DWORD(LoWord(TransTable^)),
   LOCALE_SLANGUAGE,
   @Result[1],
   100));
end;
procedure TVerInfoRes.FillFileVersionInfo;
var
 SBSize: UInt;
begin
 // Determine size of version information
 Size := GetFileVersionInfoSize(PChar(FFileName), Handle);
 if Size <= 0 then         { raise exception if size <= 0 }
   raise ENoVerInfoError.Create("No Version Info Available.");
 // Set the length accordingly
 SetLength(RezBuffer, Size);
 // Fill the buffer with version information, raise exception on error
 if not GetFileVersionInfo(PChar(FFileName), Handle, Size, PChar(RezBuffer)) then
   raise EVerInfoError.Create("Cannot obtain version info.");
 // Get translation info, raise exception on error
 if not VerQueryValue(PChar(RezBuffer), VerTranslation,  pointer(TransTable),
 SBSize) then
   raise EVerInfoError.Create("No language info.");
end;
procedure TVerInfoRes.FillFixedFileInfoBuf;
var
 Size: Cardinal;
begin
 if VerQueryValue(PChar(RezBuffer), "\", Pointer(FixedFileInfoBuf), Size) then begin
    if Size < SizeOf(TVSFixedFileInfo) then
       raise eNoFixeVerInfo.Create("No fixed file info");
 end
 else
   raise eNoFixeVerInfo.Create("No fixed file info")
end;
procedure TVerInfoRes.FillFileMaskInfo;
begin
 with FixedFileInfoBuf^ do begin
   if (dwFileFlagsMask and dwFileFlags and VS_FF_PRERELEASE) <> 0then
     FFileFlags.Add("Pre-release");
   if (dwFileFlagsMask and dwFileFlags and VS_FF_PRIVATEBUILD) <> 0 then
     FFileFlags.Add("Private build");
   if (dwFileFlagsMask and dwFileFlags and VS_FF_SPECIALBUILD) <> 0 then
     FFileFlags.Add("Special build");
   if (dwFileFlagsMask and dwFileFlags and VS_FF_DEBUG) <> 0 then
     FFileFlags.Add("Debug");
 end;
end;
function TVerInfoRes.GetPreDefKeyString(AVerKind: TVerInfoType): String;
var
 P: PChar;
 S: UInt;
begin
 Result := Format(FormatStr, [SfInfo, LoWord(TransTable^),HiWord(TransTable^),
   VerNameArray[aVerKind], #0]);
 // get and return version query info, return empty string on error
 if VerQueryValue(PChar(RezBuffer), @Result[1], Pointer(P), S) then
   Result := StrPas(P)
 else
   Result := "";
end;
function TVerInfoRes.GetUserDefKeyString(AKey: String): String;
var
 P: Pchar;
 S: UInt;
begin
 Result := Format(FormatStr, [SfInfo, LoWord(TransTable^),HiWord(TransTable^),
   aKey, #0]);
 // get and return version query info, return empty string on error
 if VerQueryValue(PChar(RezBuffer), @Result[1], Pointer(P), S) then
   Result := StrPas(P)
 else
   Result := "";
end;
function VersionString(Ms, Ls: Longint): String;
begin
 Result := Format("%d.%d.%d.%d", [HIWORD(Ms), LOWORD(Ms),
    HIWORD(Ls), LOWORD(Ls)]);
end;
function TVerInfoRes.GetFileVersion: String;
begin
 with FixedFileInfoBuf^ do
   Result := VersionString(dwFileVersionMS, dwFileVersionLS);
end;
function TVerInfoRes.GetProductVersion: String;
begin
 with FixedFileInfoBuf^ do
   Result := VersionString(dwProductVersionMS, dwProductVersionLS);
end;
function TVerInfoRes.GetFileOS: String;
begin
 with FixedFileInfoBuf^ do
   case dwFileOS of
     VOS_UNKNOWN:  // Same as VOS__BASE
       Result := "Unknown";
     VOS_DOS:
       Result := "Designed for MS-DOS";
     VOS_OS216:
       Result := "Designed for 16-bit OS/2";
     VOS_OS232:
       Result := "Designed for 32-bit OS/2";
     VOS_NT:
       Result := "Designed for Windows NT";

     VOS__WINDOWS16:
       Result := "Designed for 16-bit Windows";
     VOS__PM16:
       Result := "Designed for 16-bit PM";
     VOS__PM32:
       Result := "Designed for 32-bit PM";
     VOS__WINDOWS32:
       Result := "Designed for 32-bit Windows";

     VOS_DOS_WINDOWS16:
       Result := "Designed for 16-bit Windows, running on MS-DOS";
     VOS_DOS_WINDOWS32:
       Result := "Designed for Win32 API, running on MS-DOS";
     VOS_OS216_PM16:
       Result := "Designed for 16-bit PM, running on 16-bit OS/2";
     VOS_OS232_PM32:
       Result := "Designed for 32-bit PM, running on 32-bit OS/2";
     VOS_NT_WINDOWS32:
       Result := "Designed for Win32 API, running on Windows/NT";
   else
     Result := "Unknown";
   end;
end;
end.


 
Шпиён   (2006-08-08 02:19) [74]

Пример использования:

.................
   DBEDIT14.Text := A.Language;
   DBEDIT15.Text := A.LangID;
   DBEDIT16.Text := A.CodePage;


 
Chort ©   (2006-08-08 09:16) [75]

Весьма благодарен! Объясните что означают Language ID и CodePage(кодовая страница)(какую инфу хранят)


 
Шпиён   (2006-08-08 21:08) [76]

Упрощенно:
LanguageID - стандартное международное числовое обозначение для языка страны или региона
CodePage - номер набора символов
ps
MSDN:
A language is identified by a LANGID, which is composed of a primary language (for example, Swiss) and a sublanguage (for example, Swiss German).

A language identifier is a standard international numeric abbreviation for the language in a country or geographical region. Each language has a unique language identifier (LANGID), a 16-bit value that consists of a primary language identifier and a sublanguage identifier.


 
Chort ©   (2006-08-08 21:25) [77]

to Шпиён
Ясно, огромное спасибо!



Страницы: 1 2 вся ветка

Текущий архив: 2006.08.27;
Скачать: CL | DM;

Наверх




Память: 0.66 MB
Время: 0.051 c
2-1154634657
Drashka
2006-08-03 23:50
2006.08.27
BTClasses


15-1154581771
Elen
2006-08-03 09:09
2006.08.27
Как работать с Asm файлами больше 5Мб?


15-1154381238
ronyn
2006-08-01 01:27
2006.08.27
Count of File s


2-1154672198
Reng
2006-08-04 10:16
2006.08.27
Прогммма сервер не отвечает


2-1154607978
DProject
2006-08-03 16:26
2006.08.27
Открыть два проекта одновременно