Правила форума: Называем темы четко, сообщения пишем грамотно и по делу, уважаем друг друга, флуд и спам неприемлемы!   Все вопросы сюда>>



АвторСообщение
Администратор




Сообщение: 82
Репутация: 0
ссылка на сообщение  Отправлено: 25.10.07 17:07. Заголовок: Delphi: Наполнение библиотеки «SPO»


Библиотека специальных подпрограмм SPO (String Parameters Operations - Операции обработки Строки Параметров).


НАЗНАЧЕНИЕ:
Представление набора параметров и значений в виде строки с разделителями:
myStr := '_param1_123_A_-6_koord_10_21_number__of_0_points';

Первым стоит символ '_' - он и является разделителем значений в данной строке.
Если же он является частью параметра, то его необходимо повторить дважды: '__'
(вообще-то можно и трижды, четырежды, ... - просто один символ из такой группы будет отброшен).
К каждому полю возможен доступ как по его номеру, так и по значению (имени).

Во многом библиотека эквивалентна существующим потомкам класса TStrings.
Главное отличие: работа с обычной символьной строкой, а не с объектом, который нужно создавать, уничтожать и периодически проверять (Assigned).


ПРИМЕНЕНИЕ:
1) Хранение произвольного количества данных любого типа (все приводится к string)
2) Хранение данных смешанного типа и/или переменной структуры
3) Передача в подпрограмму и возврат из функции сразу целого набора значений
4) Упрощенная альтернатива для работы со СПИСКАМИ, XML-данными, таблицами БД.


СКАЧАТЬ ПРОЕКТ:
http://alex-world.ru/go?down_spo

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 9 [только новые]


Администратор




Сообщение: 111
Репутация: 0
ссылка на сообщение  Отправлено: 06.11.07 14:11. Заголовок: В НАСТОЯЩИЙ МОМЕНТ Г..


В НАСТОЯЩИЙ МОМЕНТ ГОТОВЫ (т.е. можно использовать при решении):

function GetCount(myStr: string): Longint; // Подсчет количества параметров в строке

function GetPosBegByIndex(myStr: string; Index: longint): longint; // позиция начала по номеру параметра

function GetValueByIndex (myStr: string; Index: longint): string; // Вернуть значение по номеру параметра (символьное)
function GetValueByIndexAsDouble (myStr: string; Index: longint): Extended; // Вернуть значение по номеру п-ра (вещественное)
function GetValueByIndexAsInteger(myStr: string; Index: longint): longint; // Вернуть значение по номеру параметра (целое число)
function GetValueByIndexAsBoolean(myStr: string; Index: longint): boolean; // Вернуть значение по номеру параметра (логическое)

function GetValueByPos (myStr: string; ipos: longint): string; // Вернуть значение по позиции (символьное)
function GetValueByPosAsDouble (myStr: string; ipos: longint): Extended; // Вернуть значение по позиции (вещественное)
function GetValueByPosAsInteger(myStr: string; ipos: longint): longint; // Вернуть значение по позиции (целое число)
function GetValueByPosAsBoolean(myStr: string; ipos: longint): Boolean; // Вернуть значение по позиции (логическое)

function IsDouble( myStr: string): boolean; // Является ли строка вещественным (или целым) числом
function IsBoolean(myStr: string): boolean; // Является ли строка логическим значением (0 и 1 - тоже ок)

function IsDoubleByIndex( myStr: string; Index: longint): boolean; // Является ли значение вещественным (или целым) числом
function IsIntegerByIndex(myStr: string; Index: longint): boolean; // Является ли значение целым числом
function IsBooleanByIndex(myStr: string; Index: longint): boolean; // Является ли значение логическим значением (0 и 1 - тоже ок)

procedure DelSomeChars(var myStr: string; SomeChars: string); // Удалить некоторые символы вокруг разделителя

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 112
Репутация: 0
ссылка на сообщение  Отправлено: 06.11.07 15:16. Заголовок: ЗАДАНИЯ К ВЫПОЛЕНИЮ:..


ЗАДАНИЯ К ВЫПОЛЕНИЮ:

function GetPosBegByPos( myStr: string; ipos: longint): longint; // позиция начала по произвольной позиции
function GetPosBegByValue(myStr, value: string): longint; // позиция начала по значению параметра

function GetPosNextByPos( myStr: string; ipos: longint): longint; // позиция начала следующего по позиции текущего
function GetPosNextByIndex(myStr: string; Index: longint): longint; // позиция начала следующего по номеру текущего
function GetPosNextByValue(myStr, value: string): longint; // позиция начала следующего по значению текущего

function GetPosPrevByPos( myStr: string; ipos: longint): longint; // позиция начала предыдущего по позиции текущего
function GetPosPrevByIndex(myStr: string; Index: longint): longint; // позиция начала предыдущего по номеру текущего
function GetPosPrevByValue(myStr, value: string): longint; // позиция начала предыдущего по значению текущего


ЭТИ ЗАДАНИЯ ПОКА НЕ ДЕЛАТЬ:

procedure ReplaceValueByPos( myStr: string; ipos: longint); // заменить значение по позиции (символьное)
procedure ReplaceValueByIndex(myStr: string; Index: longint); // заменить значение по номеру (символьное)

procedure DecValueByPos( myStr: string; ipos: longint); // декремент значения по позиции (только для целых полей)
procedure DecValueByIndex(myStr: string; Index: longint); // декремент значения по номеру (только для целых полей)
procedure IncValueByPos( myStr: string; ipos: longint); // инкремент значения по позиции (только для целых полей)
procedure IncValueByIndex( myStr: string; Index: longint); // инкремент значения по номеру (только для целых полей)

function IsEqv(myStr1, myStr2: string): boolean // сравнение 2 строк с возможно разными разделителями и порядком параметров (true - набор значений одинаков)

procedure Add(myStr, value: string); // добавить значение в конец
procedure InsertToIndex(myStr, value: string; Index: longint); // добавить значение по указанному номеру

procedure DelByPos(myStr: string; ipos: longint); // удалить параметр по позиции
procedure DelByIndex(myStr: string; Index: longint); // удалить параметр по номеру
procedure DelFirst(myStr: string); // удалить первый параметр
procedure DelLast(myStr: string); // удалить последний параметр


Прежде чем взять какую-либо 1 задачу, обязательно отпишитесь в этой теме!

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 1
Репутация: 0
ссылка на сообщение  Отправлено: 25.12.07 21:38. Заголовок: Простите, но ссылка ..


Простите, но ссылка на проект битая... :(

И ещё насчёт задания.
Не совсем понятно что требуется, например это:

 цитата:

// позиция начала по произвольной позиции



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 145
Репутация: 1
ссылка на сообщение  Отправлено: 26.12.07 11:18. Заголовок: Простите, но ссылка ..



 цитата:
Простите, но ссылка на проект битая... :(


Недоглядел! На Mail.Ru какой-то бардак перед НГ.
Вот прямая: http://alex-world.ru/go?down_spo

// позиция начала по произвольной позиции
если мы ткнем наугад в строку, то угодим в какой-то параметр (разделитель считать относящимся к правому параметру)
Нужно определить позицию, где начало того элемента (т.е. после разделителя) в который мы попали

Кстати, к каждому заданию там есть пояснения с примерами!

Спасибо: 1 
ПрофильЦитата Ответить



Сообщение: 2
Репутация: 0
ссылка на сообщение  Отправлено: 26.12.07 20:12. Заголовок: Спасибо! Уже выполня..


Спасибо! Уже выполняю. :)

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 3
Репутация: 0
ссылка на сообщение  Отправлено: 28.12.07 22:25. Заголовок: GetPosBegByPos я уже..


GetPosBegByPos я уже сделал.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 4
Репутация: 0
ссылка на сообщение  Отправлено: 28.12.07 22:59. Заголовок: Кстати, <b>G..


Кстати, GetPosBegByIndex уже написана вами. Прошу удалить её из списка.

Спасибо. Уже подкорректировал списки.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 146
Репутация: 1
ссылка на сообщение  Отправлено: 31.12.07 12:29. Заголовок: Приветствую. Итак, в..


Приветствую.
Итак, в доработке сейчас находятся:

GetPosBegByPos
GetPosBegByValue

На прочие подпрограммы заявок не поступало.
Всех с Наступающим!

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
Репутация: 0
ссылка на сообщение  Отправлено: 01.01.08 19:23. Заголовок: Сделал ещё GetPosNex..


Сделал ещё GetPosNextByPos.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Активность сегодня: 17
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет





Мир Идей:
∙ Форумы ∙
∙ Космос ∙
∙ Heroes ∙
∙ Зона И ∙
∙ Раритеты ∙
∙ WEB ∙
∙ AML ∙
∙ Program ∙


(C) Copyright 1998 – 2016 by Alex_soldier