Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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 как-то конвертировать надо или нет?)


Наверх

Титульная страница Поиск, карта сайта Написать письмо