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




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 72 из 116<  1 ... 69  70  71  72  73  74  75 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 04.08.2005
Откуда: Minsk
_SGK писал(а):
Мот тады лучше в агрономы?

Не. А вообче програмлю всёкие МК. Но в свободное время решил вспомнить(изучить заново) дельфи...



Партнер
 

Member
Статус: Не в сети
Регистрация: 05.01.2005
Максим
Максим писал(а):
Попробовал стандартными дельфийскими компонентами для AdoDB - секунд 30 открывается

А стандартные компоненты тут причем?
ИМХО ошибки могут быть где угодно, начиная от проектирования БД заканчивая ... ;)
Максим писал(а):
А если нужно открыть тоже самое, но с другим фильтром (предположим все из одной таблички, но каждая запись зависит от своего родителя и предположим уровень вложенности чайлдов 4) - дык и открывается просто приложение 2 минуты.

А изменить логику приложения так, чтобы таких запросов не возникало?
Обычно подобные моменты свидетельствуют о несколько неверной архитектуре приложения.

А то прям как в том анекдоте: - А хто всрався? – Невiстка…


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
_SGK
Да все можно сделать, не спорю. Просто берем к примеру рабочую базу на Оракле - хоть 100 табличек открывай, приложение будет открыто сразу. Я понимаю разные конечно базы, но хочется того же самого.

По поводу проектирования базы - уже немогу ничего исправить, база не моя и я не участвовал в ее проектировании.

Сделать, чтобы все Query были зависемы от родительской AdoTable - делал, толку нет. Все так же.

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


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
Максим
Максим писал(а):
Просто берем к примеру рабочую базу на Оракле

Судя по всему у тебя связка Microsoft Jet 4.0 OLE DB Provider + здоровенная база + "некислые" "аппетиты" в запросах...
Максим писал(а):
Я понимаю разные конечно базы, но хочется того же самого.

ИМХО каждый работодатель тоже хотет, чтобы его рабочий лопатой котлован рыл со скоростью экскаватора. ;)


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Может я уже окончательно заглючил, вот понять никак не могу как из файла прочитать такие структуры: допустим a - 4-x байтовое беззнаковое целое (longword), b - двухбайтовое беззнаковое целое (word). с - однобайтовое беззнаковое целое (byte). d - 10-ти байтовое вещественное число (extended). Всего 17байт на запись. Если я создаю тип:
Код:
    TRecord1 = record
      a: longword;
      b: word;
      c: byte;
      d: Extended;
    end;

то все это дело весит 24байта и читается из файла соответственно со сдвигом и некорректно. :?:
Так вот, как бы тут извернуться??
Добавлено спустя 49 секунд
PS файл был записан х.з. какой программой, возможно написанной на C

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Lord_of_Darkness видимо он был написан на Делфи с использованием выравнивания данных.
Попробуй использовать packed record

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Daemon в точку! спасибо :beer:

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 01.07.2006
Откуда: Челябинск
Срочно нужно написать программу для считывания температуры с датчиков DS1820 по интерфейсу MicroLAN
датчик подключается к COM порту
кто интересуется есть исходники программ на делфи схемы и документация


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
_SGK
Да, примерно такая связка.
Я просто все до сих пор балуюсь написанием плагинов для All My Movies (есть такая прога).
А так, база можно сказать и не очень большая - 2K записей, 260 метров (из-за скринов в базе) и селект по дате без сортировки. Так что по идее ничего особенного.

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


 

Member
Статус: Не в сети
Регистрация: 01.07.2006
Откуда: Челябинск
Подскажите чем лучше пользоваться для приема передачи данных через Com порт


 

Member
Статус: Не в сети
Регистрация: 24.12.2004
Откуда: Ставрополье
Здравствуйте, подскажите как найти в файле нужную последовательность байтов ?

Нужная последовательность : 1234

Код :

while not eof(файл) do begin
read(файл,b);
if b=1 then begin
read(файл,b);
if b=2 then begin
read(файлb);
if b=3 then
ххххххххххх
end;
end;
end;

Не ищет :(

_________________
Ставрополье Оверклокерс http://forums.overclockers.ru/viewtopic.php?t=125746
-= World Of Tanks =- (для связи Ватс Ап +7-903-418-03-43)


 

Advanced member
Статус: Не в сети
Регистрация: 12.01.2004
FatumNNM
FatumNNM писал(а):
подскажите как найти в файле нужную последовательность байтов ?

Так байтов или символов все же?
А read(file, string) читает строку вообще-то, а не один символ. Лучше вычитать весь файл в буфер и там уже с помощью строковых операций найти искомую подстроку

_________________
Sapienti sat


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
FatumNNM & --Vel--
FatumNNM писал(а):
Здравствуйте, подскажите как найти в файле нужную последовательность байтов ?

--Vel-- писал(а):
Лучше вычитать весь файл в буфер и там уже с помощью строковых операций найти искомую подстроку

Думаю, что лучше таки читать в буфер фиксированного размера, к примеру, в 1Mb и производить поиск в нем, и так в цикле, с учетом смещения до конца файла.
Бо файлы бывают просто неприлично больших размеров :) - больше размера физически доступного ОЗУ и их чтение за один раз выглядит очень забавно. ;)


 

Advanced member
Статус: Не в сети
Регистрация: 12.01.2004
_SGK
_SGK писал(а):
Думаю, что лучше таки читать в буфер фиксированного размера, к примеру, в 1Mb и производить поиск в нем, и так в цикле, с учетом смещения до конца файла.

Но, нужно еще производить поиск в границах буфера. Т.е. вариант "12" находится в первом мегабайте, а "34" в начал второго. В принципе, не тяжело, но для облегчения первоначальной работы можно и весь файл загнать в буфер.
_SGK писал(а):
больше размера физически доступного ОЗУ и их чтение за один раз выглядит очень забавно.

Не помню как это выглядит в Delphi, а вот в C# он сначала вычитавает столько, сколько вмещается в память, потом матерится, вываливается, а память не освобождается. И тут уже не до смеха

_________________
Sapienti sat


 

Member
Статус: Не в сети
Регистрация: 05.01.2005
--Vel--
--Vel-- писал(а):
Но, нужно еще производить поиск в границах буфера.

Безусловно, именно по этому я и написал об учете смещения. :)
_SGK писал(а):
и так в цикле, с учетом смещения до конца файла.

--Vel-- писал(а):
Не помню как это выглядит в Delphi, а вот в C# он сначала вычитавает столько, сколько вмещается в память, потом матерится, вываливается, а память не освобождается. И тут уже не до смеха

Я видел несколько вариантов ПО на Delphi, которые пытались читать больше чем нужно.
Бедный винт аж ... :) от использования файла подкачки.
Чем заканчивалось не скажу, бо никогда окончания не ждал, а просто снимал задачу.


 

Member
Статус: Не в сети
Регистрация: 15.04.2006
Люди, пожалуста, извените, что перебиваю. Но мне нужна помощь.
Дело в том, что я обсолютный 0(ноль), в програмировании. Я слышал только что Delphi это лучшая программа для этого.
Не могли бы вы мне подсказать, как начать это дело. Может кто знает какие-нибудь ,,самоучители с нуля,, в сети.
Зарание спасибо.


 

Advanced member
Статус: Не в сети
Регистрация: 12.01.2004
Igor (Lipa Sity)
Книги по программированию

_________________
Sapienti sat


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
Igor (Lipa Sity)
Залез на delphiworld.narod.ru и там поищи. Там ты точно и быстро найдешь искомый код.

А так, тут тебе уже посоветовали - лучше читать в буффер (ну например размером в 64 килобайта и уже проверять там), ну и так же учитывать смещения, если дошел до конца буфера.

Если файл текстовый и не особо большой, то можно что-то типа такого :)

Код:
var
  shift: array[0..255] of Byte;     
  Look_At: Integer;                   

procedure Ts_init(P: PChar; m: Integer);
var
   i: Integer;
begin
  for i := 0 to 255 do shift[i] := m + 1;
  for i := 0 to m - 1 do Shift[Ord(p[i])] := m - i;
  Look_at := 0;
  while (look_At < m - 1) do
   begin
     if (p[m - 1] = p[m - (look_at + 2)]) then Exit
     else
        Inc(Look_at, 1);
   end;

end;


function Ts_Search(Text, p: PChar; m: Integer; Start: Longint): Longint;
var
   I: Longint;
   T: PChar;
begin
   T      := Text + Start;   
   Result := -1;
   repeat
     i := m - 1;
    while (t[i] <> p[i]) do t := t + shift[Ord(t[m])];
     i := i - 1; 
    if i < 0 then i := 0;
    while (t[i] = p[i]) do
      begin
       if i = 0 then Result := t - Text;
       i := i - 1;
     end;
    if Result = -1 then t := t + Look_AT + shift[Ord(t[m + look_at])];
   until Result <> -1;
end;

procedure SearchTextInFile(Str: String);
var
   tt: string;
   L: Integer;
   L2, sp, a: Longint;
   F: file;         
  Size: Integer;   
  Buffer: PChar; 
begin
   tt := Str;
  L  := Length(TT);     
  ts_init(PChar(TT), L);
  try
     AssignFile(F, 'test.txt');
     Reset(F, 1);                 
    Size := FileSize(F);           
    GetMem(Buffer, Size + L + 1);   
    try
       BlockRead(F, Buffer^, Size);
      StrCat(Buffer, PChar(TT));     
      SP := 0;           
      A  := 0;             
      while SP < Size do
       begin
         L2 := Ts_Search(Buffer, PChar(TT), L, SP);
        SP := L2 + L;
        Inc(a);   
      end;
    finally
       FreeMem(Buffer);   
    end;
   finally
     CloseFile(F);           
  end;
 end;

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


 

Member
Статус: Не в сети
Регистрация: 24.12.2004
Откуда: Ставрополье
--Vel-- писал(а):
Так байтов или символов все же?


байтов :)

FatumNNM писал(а):
if b=1 then begin


var b:byte;


Может есть спец. компоненты для поиска в файлах ?

_________________
Ставрополье Оверклокерс http://forums.overclockers.ru/viewtopic.php?t=125746
-= World Of Tanks =- (для связи Ватс Ап +7-903-418-03-43)


 

Member
Статус: Не в сети
Регистрация: 30.07.2006
Откуда: Москва-Ярик
Если файл двоичный, но меньше 4Гб:
Код:
uses Windows, SysUtils;
{$APPTYPE CONSOLE}
type
    PDWORD = ^DWORD;
   
const
    szex = 4;  // size of example

var
   f: File;
   sz, rr, r, fpos,
   n, nofs: Integer;
   buff: array [0..32767] of byte; // 32 kbytes

begin
 Assign (f, ParamStr (1));
 {$I-}
  Reset (f, 1);
  if IOresult <> 0 then exit;
 sz := FileSize (f);
 FillChar (buff, sizeof (buff), 0); // init.
 nofs := 0;
 rr := sizeof (buff) - (szex - 1); // 3 байта используются для дополнения
 if sz > 0 then
 while TRUE do
 begin
  fpos := FilePos (f); // save position
  BlockRead (f, buff[nofs], rr, r);  // read
  // Производим поиск, не трогая последние три смещения (поскольку проверяются 4 байта)
  for n := 0 to r - szex - 1 do
   { if (buff[n + 0] = 1) and (buff[n + 1] = 2) and  // unoptimized variant
        (buff[n + 2] = 3) and (buff[n + 3] = 4) then }
   if PDWORD(@buff[n])^  = $04030201 then // optimized variant
    begin
     WriteLn (format ('Result found at $%x', [fpos + n - nofs]));
    end;
  if r < rr then  // end of file check
             break;
  nofs := szex - 1; // unchecked bytes
  // move last nofs bytes to start of buff
  Move (buff[r - nofs], buff[0], nofs);
 end;
 Close(f);
 WriteLn ('Scan complete');
 Readln;
end.

_________________
Плавайте поездами Аэрофлота!
И синий BSOD нам заменяет небосвод...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 72 из 116<  1 ... 69  70  71  72  73  74  75 ... 116  >
-

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


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

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


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

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