![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
inttostr на winapi [D7]
istok © (2007-12-10 19:52:00)как, не используя string и sysutils, записать результат getlasterror в pchar ?
Palladin (2007-12-12 11:27:00) [1]
> DVM © (11.12.07 21:45) [13]
а GetMem/FreeMem использовать нельзя! :) они в System!
DVM (2007-12-11 21:45:00) [2]
> и еще буду оч признателен совету, как сделать аналог timetostr(now)
> на winapi.
function GetTime: string;
var
st: TSystemTime;
Time, FormatString: PChar;
TimeSize, FormatStringSize: integer;
begin
Result := '';
FormatStringSize := GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, nil, 0);
GetMem(FormatString, FormatStringSize * SizeOf(Char));
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, FormatString, FormatStringSize);
GetLocalTime(st);
TimeSize := GetTimeFormat(LOCALE_USER_DEFAULT, 0, nil, FormatString, nil, 0);
GetMem(Time, TimeSize * SizeOf(Char));
GetTimeFormat(LOCALE_USER_DEFAULT, 0, @st, FormatString, Time, TimeSize * SizeOf(Char));
result := Time;
FreeMem(Time);
FreeMem(FormatString);
end;
//------------------------------------------------------------------------------
function GetDate: string;
var
st: TSystemTime;
Date, FormatString: PChar;
DateSize, FormatStringSize: integer;
begin
Result := '';
FormatStringSize := GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, nil, 0);
GetMem(FormatString, FormatStringSize * SizeOf(Char));
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, FormatString, FormatStringSize);
GetLocalTime(st);
DateSize := GetDateFormat(LOCALE_USER_DEFAULT, 0, nil, FormatString, nil, 0);
GetMem(Date, DateSize * SizeOf(Char));
GetDateFormat(LOCALE_USER_DEFAULT, 0, @st, FormatString, Date, DateSize * SizeOf(Char));
result := Date;
FreeMem(Date);
FreeMem(FormatString);
end;
@!!ex (2007-12-11 21:22:00) [3]> [11] istok (11.12.07 21:03)
да
istok (2007-12-11 21:03:00) [4]
> Смешно. Этот модуль линкуется независимо от твоего желания.
и к длл тоже?
palva (2007-12-11 09:58:00) [5]
> судя по описанию в мсдн то что надо - а в какой либе искать?
> примерчика юза под delphi нет?
{$APPTYPE CONSOLE}
function wsprintf(buf: PChar; const frm: PChar):Integer;
CDecl; VarArgs; external 'User32.dll' name 'wsprintfA';
var
buf: array [0..100] of Char;
s: String;
begin
s := 'Happy New Year';
wsprintf(@buf, '%02d/%02d - %s', 1, 1, @s[1]);
WriteLn(buf); // 01/01 - Happy New Year
end.
@!!ex (2007-12-11 09:15:00) [6]> модуль system тоже юзать низя, только windows
Смешно. Этот модуль линкуется независимо от твоего желания.
Palladin (2007-12-11 09:03:00) [7]
> istok (11.12.07 02:42) [5]
и как же ты его использовать не будешь интересно? :)
Anatoly Podgoretsky (2007-12-11 08:48:00) [8]
> модуль system тоже юзать низя, только windows
Почему?
И как ты это избежишь?
Leonid Troyanovsky (2007-12-11 06:02:00) [9]
> istok (11.12.07 02:42) [5]
> модуль system тоже юзать низя, только windows
Мазохист?
> судя по описанию в мсдн то что надо - а в какой либе искать?
http://delphimaster.ru/cgi-bin/forum.pl?id=1196006379&n=5
--
Regards, LVT.
istok (2007-12-11 02:42:00) [10]
Palladin © (10.12.07 19:57) [2]
> inttostr - str + F1 (или учебник паскаля)
модуль system тоже юзать низя, только windows
> timetostr - никто не мешает заглянуть в sysutils.pas и выдернуть
> от туда функцию
мешает. там кода немало, и он везде string использует.
> palva © (10.12.07 20:31) [3]
сенкс
> Правильный_Вася (10.12.07 20:56) [4]
>
> Format()
из какой длл? (я так понял что это не сисютиловский формат, который по условию не подходит)
> Правильный_Вася (10.12.07 20:56) [4]
>
> sprintf
судя по описанию в мсдн то что надо - а в какой либе искать? примерчика юза под delphi нет?
Правильный_Вася (2007-12-10 20:56:00) [11]Format()
sprintf
palva (2007-12-10 20:31:00) [12]pchar это четырехбайтовое целое число. Поэтому можно просто присвоить. Только необходимо приведение типов. Вспомнив недавние советы Подгорецкого, пишу:
{$APPTYPE CONSOLE}
uses Windows;
var
p: PChar;
begin
Integer(p) := GetLastError;
Writeln(Integer(p)); // 126
end.
Palladin (2007-12-10 19:57:00) [13]inttostr - str + F1 (или учебник паскаля)
timetostr - никто не мешает заглянуть в sysutils.pas и выдернуть от туда функцию
istok (2007-12-10 19:53:00) [14]и еще буду оч признателен совету, как сделать аналог timetostr(now) на winapi.
(я так понимаю, gettickcount как-то конвертировать надо или нет?)