Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
#46: 2009-04-22 00:30:58 ЛС | профиль | цитата
Tad писал(а):
Один nesco согласился, что нужно добавить. Рецензии от Dilma недождались.

Tad, если за основу критерия "На полном серьёзе" принимать некие (какие угодно) выкладки по одному вопросу в процессе обсуждения другого - то я боюсь мы друг друга не допоняли. Я скажем это называю вот так:
Dilma писал(а):
я таки за чашкой чая прочел два последних сообщения


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

подразумевает создание новой темы в разделе "Среда HiAsm" (если вопрос касается среды) и в разделе "Пакет ХХХ" (если вопрос касается конкретного пакета) с коротким, но суть отражающим названием, с приведением скринов, схем или кода, с выкладками того "как есть" и "как надо" и соответствующим пояснением "почему плохо" и "почему хорошо". От пользователя, который проделает такую работу отмахнуться невозможно и его вопрос будет рассмотрен. Впрочем про это я уже сто раз писал.

nesco писал(а):
возникло предложение загнать иконки в кортеж первым параметром, затем цвет, тогда их можно отсечь.

nesco, на такой вопрос невозможно ответить однозначно без полного представления о том, на что данное изменение вообще может влиять.
карма: 27
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#47: 2009-04-22 00:35:57 ЛС | профиль | цитата
Dilma писал(а):
на что данное изменение вообще может влиять.

Да ни на что, кроме совместимости, но этот компонент никто толком не использует. А у себя, я уж как-нибудь подстрою, заодно и проверю
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#48: 2009-04-22 09:40:42 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 19:37:02
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#49: 2009-04-22 12:03:21 ЛС | профиль | цитата
Выше это я.
nesco, разубеди меня, что режим Add нельзя заменить Insert-ом.

procedure ThiMTStrTbl.ActionItm; // проверен
var
Row, Col: integer;
fd: PData;
begin
case Data.Data_type of
data_null: exit;
end;


case Mode of
ITM_INSERT, ITM_REPLACE:
begin
Row := ReadInteger(Data, Null);
if (Row > Control.Count - 1) then Row := Control.Count; // Значит ADD
end;
end;

Col := 0;
Control.LVItemInsert(Row, ');

while Col < Control.LVColCount do
begin
Control.LVItems[Row, Col] := ReadString(Data, Null);
inc(Col);
end;
case Data.Data_type of
data_null: exit;
end;
new(fd);
FillChar(fd^, sizeof(TData), 0);

if (Assigned(SmIlist) and (Control.LVStyle <> lvsIcon)) or
(Assigned(LgIlist) and (Control.LVStyle = lvsIcon)) then
// begin
Control.LVItemImageIndex[Row]:= ReadInteger(Data, Null);
// end;

CopyData(fd, @Data);
Control.LVItemData[Row] := cardinal(fd);
end;

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#50: 2009-04-22 12:27:16 ЛС | профиль | цитата
Tad, слушай, меня в твоем подходе не устраивает только то, что при такой постановке кода, Replace выдает RunTimeError. Это раз, второе: если стоит ITM_ADD, где Row := Control.Count -- его нет, и что это получится тогда, что Row при Add будет неопределен.

Единственное, что можно сделать, так это вот так


  case Mode of
ITM_ADD:
Row := Control.Count;
ITM_INSERT, ITM_REPLACE:
begin
Row := ReadInteger(Data, Null);
if (Row > Control.Count - 1) then exit;
end;
end;

Но преимущества тут я никакго не вижу для режима Add, только для Insert-a и Replac-a
И не надо, чтобы Insert выполнял роль Add -- бред это. Сделать это можно, но не нужно

------------ Дoбавленo в 12.30:
Опередил с исправлениями. Да, можно и так сделать, как в 2.6 (а что это за номера, я не помню таких версий )
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#51: 2009-04-22 12:31:57 ЛС | профиль | цитата
nesco, и как это мы с тобой в БД живем без ADD, а с одним INSERT и REPLACE.
И почему нельзя INSERT в конец, а ADD в начало можно?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#52: 2009-04-22 12:42:23 ЛС | профиль | цитата
Tad, но в таблице был и есть Add, пусть он там и остается, причем на быстродействие это никак не влияет тк работает одна функция -- твой "любимый" Insert (Control.LVItemInsert(Row, ')). Или ты хочешь, чтобы и Insert имел возможность выполнять роль Add, а смысл

А с кодом остановимся вот на таком варианте


  case Mode of
ITM_INSERT, ITM_REPLACE:
begin
Row := ReadInteger(Data, Null);
if (Row > Control.Count - 1) then exit;
end
else
Row := Control.Count;
end;

Между прочим, в SQL нет REPLACE, а есть UPDATE
------------ Дoбавленo в 12.44:
Tad писал(а):
а ADD в начало можно?

Ради всего святого -- вот этого не надо. Пусть Add остается Add, а в начало Insert при Row=0 добавляет
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#53: 2009-04-22 12:45:53 ЛС | профиль | цитата
2.6 секунд
------------ Дoбавленo в 12.48:
nesco писал(а):
SQL нет REPLACE
Невероятно, но факт - ЕСТЬ !
Синтаксис один к одному как INSERT и является алиасом INSERT

REPLACE INTO [database-name.] table-name [( column-list )] VALUES ( value-list )
REPLACE INTO [database-name.] table-name [( column-list )] select-statement

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#54: 2009-04-22 12:58:49 ЛС | профиль | цитата
Tad писал(а):
Невероятно, но факт - ЕСТЬ !

А у Грубера не описан, только что смотрел, хотел почитать подробнее, может это не стандарт ASCII
------------ Дoбавленo в 13.00:
Tad писал(а):
2.6 секунд

Пример кинь, на котором ты секунды тестируешь, можно в совокупе с обычной
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#55: 2009-04-22 13:07:00 ЛС | профиль | цитата
nesco писал(а):
Или ты хочешь, чтобы и Insert имел возможность выполнять роль Add, а смысл
Ты отправил по insert строку в таблицу, под номером большим чем в таблице строк. Ну не дело это EXIT . Кто знает как в программе будет формироваться номер строки для INSERT
------------ Дoбавленo в 13.08:
nesco писал(а):
Пример кинь, на котором ты секунды тестируешь
Пример один и тот-же - с тремя таблицами, что выкладывал в начале
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#56: 2009-04-22 13:10:12 ЛС | профиль | цитата
Мдааа... Ну может быть. Сделаем тогда вот так


  case Mode of
ITM_REPLACE:
begin
Row := ReadInteger(Data, Null);
if (Row > Control.Count - 1) then exit;
end
ITM_INSERT:
Row := ReadInteger(Data, Null);
else
Row := Control.Count;
end;

И овцы целы, и волки сыты, и пастухи пьяны (с)
------------ Дoбавленo в 13.15:
Tad писал(а):
Пример один и тот-же - с тремя таблицами, что выкладывал в начале

А, но я на нем и тестирую. Странный результат получается с потоковой таблицей, каждый запуск у нее время падает, но до определенного предела, а на обычной -- наоборот растет На ней у меня получается 0,935 против 1,3 при первом запуске
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#57: 2009-04-22 13:17:49 ЛС | профиль | цитата
нормально. только после первого END точку с запятой пропустил. Ну это результат влияния запущеных на компе процесов, кеша, да мало ли чего.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#58: 2009-04-22 13:19:08 ЛС | профиль | цитата
Tad писал(а):
только после первого END точку с запятой пропустил

Действительно, а компилятор промолчал, как партизан
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#59: 2009-04-22 13:23:51 ЛС | профиль | цитата
nesco писал(а):
Действительно, а компилятор промолчал, как партизан
Ха,ха,ха. Как ты с меня смеялся. HiUpdate запускал - строку компилятора поправь
У меня заорал так, как надо.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#60: 2009-04-22 13:24:18 ЛС | профиль | цитата

-- тут была фигня --

Tad писал(а):
У меня заорал так, как надо

Странно, у меня всегда вот такая строка стоит

"%fname%" "-U%upath%." -DSQLITE_OBJ -Q -$O+ "-E%opath%

карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)