Текущий архив: 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