Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 100 из 116<  1 ... 97  98  99  100  101  102  103 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ZALMAN0371
Это значит, что значение Value побитово сдвинуть на Digits бит вправо и выделить 1 бит.
То есть в Digits у тебя должно находиться кол-во бит (или длина строки) на выходе.
То есть к примеру если запустишь так(spaces можешь выкинуть из функции совсем:
Код:
Temp := IntToBin(8, 4);
, то в итоге получишь: 1000,
а если сделаешь так -
Код:
Temp := IntToBin(8, 3);
, то в итоге получишь: 000

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!



Партнер
 

Member
Статус: Не в сети
Регистрация: 20.09.2006
Максим ассемблеровская функция в делфе пашет?


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ZALMAN0371
По поводу подсчета кол-во слов в строке? Ну да, пашет.
Это две функции из пакета Qstrings от Andrew Dryazgov. Если что, то могу весь исходник с такими вещами выложить.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 20.09.2006
Максим по поводу SHR.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ZALMAN0371
Я же ответил

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 20.09.2006
Максим Я имел ввиду то что SHR пашет без каких либо спец. слов в делфе просто так? Кстати слово Register что значит?


 

Максим писал(а):
АГА, так проще, но факт в том, что точно медленнее будет, да еще и память жрет

Почему ты считаешь, что медленнее? Ты хочешь сказать, что быстрее будет прокручивать циклы по всему тексту, в поисках соответствия в массивах с разделителями? А что касается памяти, я не думаю, что это настолько принципиально и каким-то образом скажется на общей работе программы.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ZALMAN0371
Да, shr это зарезервированное слово для работы с битами.

А Register - это слово, определяющее, что входные параметры будут передаваться через регистры типа eax, ebx и т.д.
Если часть запускаешь большое кол-во процедур, немного выигрываешь в скорости. Но в итоге от этого слова в большинстве своего кода просто ушел.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 20.09.2006
Максим Спасибо за ответы и выдержку.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
-Raptor-
Вполне возможно, что в скорости будет тоже самое, но памяти TList жрет мягко говоря конкретно. Хотя конечно кому как.
Лучше тогда уж использовать переделанный Tlist из пакета RtlVclOptimize

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Максим
TStringList можно использовать лишь для получения параметров и выполнения с ними определённых действий, а затем уничтожать, освобождая тем самым память. Всё зависит от того, как будут использоваться эти самые параметры. В любом случае, для хранения параметров нужна какая-то структура - будь то массив или список, не суть важно. Sokrat'у это нужно для передачи параметров в БД, как я понял из его поста. А когда речь идёт о базах, грешить на расходы памяти TStringList просто смешно, т.к. компоненты для работы с базой (ADO, BDE, NativeDB и пр.) жрут памяти значительно больше какого-то жалкого списка со строками, да и скорость обращения к базе куда медленнее обработки строчек в TStringList.


Последний раз редактировалось -Raptor- 31.07.2008 19:56, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
-Raptor-
Так потому что стандартный TTable и иже с ним основаны как раз на TList. Хотя в тоже время, при работе с таблицами лучше использовать TkbmMemTable в режиме Small или TMemTableEh, памяти очень мало уходит.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 15.08.2004
Откуда: Красноярск
А я вот вообще использую KOL и его объекты. И память не жрет, и работает шустро.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ckotick
Кстати память то он жрет конкретно, все тоже самое, просто vcl не используется, а используется KOL код для визуализации.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 27.05.2006
Откуда: Saransk
Всем доброго времени суток. У меня следущий вопрос. У меня в компоненте ListBox выводится список txt файлов, примерное с такими именами "накладная20080512.txt" и так далее, задача следущая нужно сделать так чтобы можно было вводить даты в какие-нибудь поля и чтобы оставались в листбоксе только те файлы чьи даты подходят, например "накладная 20080501.txt и накладная20080522.txt" т.е. файлы с 1 по 22 мая, может какой нить компонент имеется в Delphi для таких задач... пожалуйста помогите, всем заранее спасибо

_________________
Я рвусь от новостей так быстро мир стал другой.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
mp3corp
А если держать все названия файлов в StringList, и потом оттуда закачивать в ListBox. Если пользователь выбирает две какие даты и пишет обновить, то очистить ListBox и копировать в него из StringList только те названия, которые подходят под эти даты?

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 27.05.2006
Откуда: Saransk
Максим мысль хорошая только реализовать пока не знаю как

_________________
Я рвусь от новостей так быстро мир стал другой.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
mp3corp
А в чем проблема то? :)
По идее все очень легко.
Функция перевода даты в формат твоей строки (ну если самому писать):
Код:
Function MakeStr(C: Char; N: Integer): String; Register;
Begin
  If N < 1 Then4
    Result := EmptyStr
  Else
  Begin
    SetLength(Result, N);
    FillChar(Result[1], Length(Result), C);
  End;
End;

Function AddChar(C: Char; Const S: String; N: Integer): String; Register;
Begin
  If Length(S) < N Then
    Result := MakeStr(C, N - Length(S)) + S
  Else
    Result := S;
End;

Function MyDateToStr(ATime: TDateTime): String;
Var
  Year, Month, Day: Word;
Begin
  //запишем в строку нужную нам дату
  DecodeDate(ATime, Year, Month, Day);
  Result := AddChar(ZeroConst, IntToStr(Year), 4) + AddChar(ZeroConst, IntToStr(Month), 2) + AddChar(ZeroConst, IntToStr(Day), 2) ;
End;

То есть у тебя в итоге получается так примерно. Предположим у тебя есть два компонента, где ты редактируешь даты edtBeginDate и edtEndDate.
Получаешь свои даты в варианте integer:
Код:
BeginDate := StrToInt(MyDateToStr(edtBeginDate.Date));
EndDate := StrToInt(MyDateToStr(edtEndDate.Date));

Добавлено спустя 9 минут, 53 секунды
Потом берешь каждый элемент stringlist и проверяешь его на соответствующие даты:
Код:
List1.Items.Clear;
For I := 0 To MyStringList.Count - 1 Do
Begin
  FileName := ExtractFileName(MyStringList[I]);
  SetLength(FileName , Length(FileName ) - Length(ExtractFileExt(FileName)));
  If Length(FileName) > 8 Then
  Begin
    FileName := Copy(FileName, Length(FileName) - 8, MaxInt);
    FileNameDate := StrToIntDef(FileName, -1); 
    If FileNameDate <> -1 Then
      If (BeginDate >= FileNameDate) And (FileNameDate <= EndDate) Then
        List1.Items.Add(MyStringList[I]);
  End;
End;

Добавлено спустя 44 секунды
вроде нигде не ошибся.

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


 

Member
Статус: Не в сети
Регистрация: 27.05.2006
Откуда: Saransk
Максим пасиб

_________________
Я рвусь от новостей так быстро мир стал другой.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
mp3corp
Да не за что. Ну подебаши немного, може ошибся с Copy :)

_________________
Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 100 из 116<  1 ... 97  98  99  100  101  102  103 ... 116  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan