Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];

Вниз

Не, ну вообще прикл...   Найти похожие ветки 

 
VitHouse   (2001-12-27 12:54) [13]

Этот конвертор распознает функции типа:
Монитор("Самсунг","20","АА");
Конвертор заполняет тип TStringFunction, Где в него прописывается имя скриптофункции и массив всех параметров!!!!!
Исходник ниже))



unit FuncConvertor10;
{Распознование функций и процедер
Версия 1.01
VitHouse ® 2001}

interface

type
TStringParams = array of string;
{Структура функции Name - Заголовок/Имя,}

PStringFunction = ^TStringFunction;
TStringFunction = record
Name: string;
Params: array of string;
end;

{Локальные явные функции}
function GetFunction (_Value: string): TStringFunction;
function FuncToStringLine (Func: TStringFunction): string;
function CreateFunction (FuncName: string; Params: array of string): TStringFunction;

{Указательные функции}
{
function GetPFunctionAddr(Value: PChar): Pointer;
function PFuncToPChar(FuncAddr: Pointer): PChar;
function CreateFunctionAddr(FuncName: PChar; Params: array of PCHar): Pointer;
}

implementation {Рутинные функции}

function CreateFunction(FuncName: string; Params: array of string): TStringFunction;
var i: integer;
l: integer;
begin
Result.Name := FuncName;
l := Length(Params);
SetLength(Result.Params, l);
for i := 0 to Length(Params) - 1 do
Result.Params[i] := Params[i];
end;


function GetCharCount(CharFind: char; _Value: string): integer;
var CharCount: integer;
Value: string;
begin
Result := 0;
Value := _Value;
CharCount{Количесво запятых} := 0;
while Pos(CharFind, Value)>0 do begin
delete(Value, Pos(",", Value), 1);
Inc(CharCount);
end;

Result := CharCount;
end;

function GetFunction(_Value: string): TStringFunction;
var Value: string;
ZapCount: Integer;
i: integer;
_Params: array of string;
begin
{
Имя функции до первой скобки (
Параметр начинается с ковычки "
Параметр заканчивается ковычкой "
Следующий параметр через запятую ,
Заканчивается функция скобкой )
}

{Этапы расспознования функции}
Value := _Value;
Result.Name := Copy(Value, 1, Pos("(", Value)-1); //Имя функции

if (Pos("(", Value) = 0) and (Pos(")", Value)=0) then
begin
Result.Name := _Value;
EXIT;
end;

{Определяем кол-во параметров}

ZapCount{Количесво запятых} := GetCharCount(",", Value);


{Если параметров нет, то выход}
if ZapCount = 0 then EXIT;


{Задаем длину массива параметров}
SetLength(Result.Params, ZapCount+1);
//SetLength(Params, ZapCount+1);


{Заполнение массива параметров значениями}

delete(Value, 1, Pos("""", Value)-1);
delete(Value, Pos(")", Value), 1);

for i := 0 to LENGTH(Result.Params) - 1 do
begin
{Поиск значения параметра
Находим первую кавычку и стераем все до нее}

{Убиваем первую кавычку}
delete(Value, POS("""", Value), 1);

{Назначаем значение параметра до следующей ковычки}
Result.Params[i] := COPY(Value, 1, Pos("""", Value)-1) ;//""+inttostr(i);

{Убиваем вторую кавычку}
delete(Value, POS("""", Value), 1);

{Убиваем все до следующей кавычки}
delete(Value, 1, Pos("""", Value)-1);
end;


end;

function FuncToStringLine(Func: TStringFunction): string;
var i: integer;
begin
Result := "";

for i := 0 to LENGTH(Func.Params) - 1 do
if i = LENGTH(Func.Params) - 1 then Result :=Result+ """" + Func.Params[i] + """"
else Result := Result+ """" + Func.Params[i] + """, ";

Result := Func.Name + "(" + Result + ")";

end;

end.



Жду Ваших мнений, господа!



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

Форум: "Основная";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
1-52573
Lamok (real)
2001-12-28 23:23
2002.01.17
EStringlistError


14-52668
Вадим
2001-11-20 23:42
2002.01.17
Splash


3-52454
Анастасия
2001-12-13 18:51
2002.01.17
Помогите, пожалуйста, срочно!!!


3-52480
grab
2001-12-14 20:05
2002.01.17
как закачать в stringgrid данные из Excel


1-52609
OlegRu
2001-12-30 21:51
2002.01.17
background для MDI-формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский