![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IntToStr без System.pas [D7, WinXP]
diimon © (2007-09-04 07:18:00)у меня проблема: хочу написать маленькое приложение(модули System.pas и SysInit.pas обрезаны)
мне необходимы функции IntToStr и StrToInt, но я не знаю как их теперь реализовать, думал выдернуть их из оригинального System.pas, но там одна функция тянет за собой другую... вообщем ничего у меня не выходит. Что делать??(Ассемблер я к сожалению почти не знаю :( )
diimon (2007-09-04 13:14:00) [41]
> tmp (04.09.07 08:19) [1]
> function IntToStr(N: Int64): string;begin Str(N,Result);
> end;
Компилятор ругается на эту строку "Str(N,Result);"
System unit out of date or corrupted: missing '@str0int64'
Anatoly Podgoretsky (2007-09-04 12:03:00) [42]> sniknik (04.09.2007 11:18:08) [8]
Для особо озабоченных, там есть генетически модифицированый System.pas
palva (2007-09-04 11:25:00) [43]не знаком с KOL?
Да, теперь я понял вопрос.
sniknik (2007-09-04 11:18:00) [44]palva © (04.09.07 11:00) [7]
не знаком с KOL? там есть замены которые можно скомпилить и использовать.
есть и описание как это сделать (не только для KOL/в нем, видел еще в статьях по минимизации получающегося екзешника)
вопрос судя по всему "того" плана, в смысле и минимизация и замены("обрезанные") в нем присутствуют... не факт что у автора все сделано верно, но "обрезка" возможна и судя по всему используется (надо верить людям. раз говорит обрезаны значит обрезаны.).
palva (2007-09-04 11:00:00) [45]> модули System.pas и SysInit.pas обрезаны
Можно их вообще стереть или забить мусором. На создание программ это не повлияет. Компилятор использует модули System.dcu и SysInit.dcu из папки LIB. Вот без них проблемно. Без System.dcu вообще невозможно получить программу, даже если вы не будете использовать IntToStr.
clickmaker (2007-09-04 10:27:00) [46]msvcrt.dll или ntdll.dll
atoi
_itoa
homm (2007-09-04 09:38:00) [47]> думал выдернуть их из оригинального System.pas
Опа. А что, они не в SysUtils.pas разве объявлены?
Anatoly Podgoretsky (2007-09-04 09:01:00) [48]Может тебе в KOL?
Anatoly Podgoretsky (2007-09-04 09:00:00) [49]Если не использовать STR/VAL, то функции настолько тривиальны, что написание с нуля, занимает ничтожное время.
tmp (2007-09-04 08:29:00) [50]В StrToIntDef лишняя переменная, лучше так:
function StrToIntDef1(const S: string; DefVal: Integer): Cardinal;
var
Code: Integer;
begin
Val(S,Result,Code);
if Code > 0 then Result := DefVal;
end;
tmp (2007-09-04 08:19:00) [51]function IntToStr(N: Int64): string;
begin
Str(N,Result);
end;
function StrToIntDef(const S: string; DefVal: Integer): Cardinal;
var
N: Cardinal;
Code: Integer;
begin
Val(S,N,Code);
if Code = 0 then
Result := N
else
Result := DefVal;
end;