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




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

Member
Статус: Не в сети
Регистрация: 09.12.2005
Откуда: Москва
Помогите пожалуйста.
Создаю программу которой подключена база данных Access (через BDE Administrator) являющаяся библиотекой. В таблице 4е столбца, один скрыт, его содержание отображается справа от таблицы в поле DBMemo, в этом же поле его можно редактировать.
Так же есть поле для редактирования 2го столбца (названия) - TBEdit.
Цель:
-Создать кнопку (на картинке buttom3) при нажатии на которую будет открываться окошко и нужно будет ввести Автора, название и год выпуска (3и строчки) и нажать ОК. Информации должна записать в таблицу.
-Создать поле, в котом можно ввести несколько букв и он искал по совпадению в полях Автор и название.
Так выглядит программа:
http://ipicture.ru/uploads/080620/I7orW8kKNq.jpg

Очень прошу помочь! Зарание спасибо.

_________________
CPU: Core i7 4770k (3.5Ghz@4.3Ghz, vCore 1.2)+Archon SB-E X2
Mobo: ASUS Z87 Pro (1205)
Mem: 2x Corsair 1866Mhz
Video: MSI N660Ti PE 2GD5@1070/7000



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Micher писал(а):
Очень прошу помочь

Чем помочь то?


 

Member
Статус: Не в сети
Регистрация: 09.12.2005
Откуда: Москва
Ray Adams , да я разобрался, спасибо )

_________________
CPU: Core i7 4770k (3.5Ghz@4.3Ghz, vCore 1.2)+Archon SB-E X2
Mobo: ASUS Z87 Pro (1205)
Mem: 2x Corsair 1866Mhz
Video: MSI N660Ti PE 2GD5@1070/7000


 

Member
Статус: Не в сети
Регистрация: 20.09.2005
Откуда: Москва
Ребят подскажите пожалуйста, как организовать такую штуку, есть база данных на сервере( InterBаse/FireBird), нужно чтобы когда на одном компе клиенте ввели данные они появились и на других компах клиентах, может есть какоето свойство или компонент незнаю...работает пока только если обновить соединение нажатием на какую нибудь кнопку и тд, нельзя ли это сделать както автоматически?
Спасибо.


 

Junior
Статус: Не в сети
Регистрация: 24.06.2007
Откуда: Москва
подскажите, плз, как в Delphi узнать длину слова? и еще вопрос, данные храняться в базе Access, нужно отсортировать по алфавиту какой-либо столбец, как сделать?
спасибо!


 

Member
Статус: Не в сети
Регистрация: 05.12.2005
ggKk
1) Воспользоваться функцией Length, которая возвращает длину строки.
2) Воспользоваться компонентом ADOQuery, и написать в нем запрос к твоей таблице с использованием ORDER BY.
Все эти вопросы находятся поиском по форуму или гуглу за пару минут, если их не знать.


 

Junior
Статус: Не в сети
Регистрация: 24.06.2007
Откуда: Москва
sashar2 писал(а):
ggKk
1) Воспользоваться функцией Length, которая возвращает длину строки.
2) Воспользоваться компонентом ADOQuery, и написать в нем запрос к твоей таблице с использованием ORDER BY.
Все эти вопросы находятся поиском по форуму или гуглу за пару минут, если их не знать.


смпасибо за оперативность! искать было некогда просто, а тут, знаю, всегда помогут :roll::wink:


 

Junior
Статус: Не в сети
Регистрация: 24.06.2007
Откуда: Москва
всем привет! перед тем как писать вопрос поискала по инету. но что -то ответа нет( точнее у меня не работает так, как пишут.
у меня есть таблица в Access, необходимо удалить все ее содержимое всей. пытаюсь через ADOQuery.SQL.strings[0] := delete from имя_таблицы_которую нужно очистить.
далее ADOQuery.Active := ture;
при запуске выдает ошибку: ADOQuery: CommandText does not return a result set.
почему такая ошибка? и как еще можно очистить таблицу?


 

Вместо Active:=True следует указать ExecSQL. Для команд вставки, удаления и обновления следует использовать именно ExecSQL, а Active:=True (Open) используется в случае извлечения данных, т.е. команды select.


 

Member
Статус: Не в сети
Регистрация: 08.11.2005
ggKk писал(а):
и как еще можно очистить таблицу?

ADOQuery.SQL.Text:="delete from имя_таблицы";
ADOQuery.ExecSQL;

_________________
AM4/B550-F/5950X/128Gb/4070S/4x4Tb NVMe


 

Junior
Статус: Не в сети
Регистрация: 24.06.2007
Откуда: Москва
Спасибо!!


 

Вопрос может быть и ламерский, но все же нужно сделать. Суть в следующем: пользователь в текстовой строке вводит какое-то количество параметров для будущего запроса в базу. Параметры разной длинны, количество их неизвестно, вводятся без пробелов через запятые. Нужно узнать сколько этих парметров, ну и отловить сами эти парметры.


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
Sokrat
НУ ищи pos все эти запятые и все :)

А так, был в свое время исходничек один. Работает не особо быстро (то есть на в цикле миллион строк будет секунд 5 примерно), но думаю хватит.
Код:
Const
  Brackets = ['(',')','[',']','{','}'];
  StdWordDelims = [#0..' ',',','.',';','/','\',':','''','"','`'] + Brackets;
  CryogenWordDelims = ['-', '+', '*', '^', '@'] + StdWordDelims;

Function WordCount(Const S: String; Const WordDelims: TCharSet): Integer;
                                                                       Register;
Var
  SLen, I: Cardinal;
Begin
  Result := 0;
  I := 1;
  SLen := Length(S);
  While I <= SLen Do
  Begin
    While (I <= SLen) And (S[I] In WordDelims) Do Inc(I);
    If I <= SLen Then Inc(Result);
    While (I <= SLen) And Not(S[I] In WordDelims) Do Inc(I);
  End;
End;

Function WordPosition(Const N: Integer; Const S: String;
                      Const WordDelims: TCharSet): Integer; Register;
Var
  Count, I: Integer;
Begin
  Count := 0;
  I := 1;
  Result := 0;
  While (I <= Length(S)) And (Count <> N) Do
  Begin
    While (I <= Length(S)) And (S[I] In WordDelims) Do Inc(I);
    If I <= Length(S) Then Inc(Count);
    If Count <> N Then
      While (I <= Length(S)) And Not (S[I] In WordDelims) Do Inc(I)
    Else Result := I;
  End;
End;

Function ExtractWord(N: Integer; Const S: String;
                     Const WordDelims: TCharSet): String; Register;
Var
  I: Integer;
  Len: Integer;
Begin
  Len := 0;
  I := WordPosition(N, S, WordDelims);
  If I <> 0 Then
    While (I <= Length(S)) And Not(S[I] In WordDelims) Do
    Begin
      Inc(Len);
      SetLength(Result, Len);
      Result[Len] := S[I];
      Inc(I);
    End;
  SetLength(Result, Len);
End;

Function ExtractWordPos(N: Integer; Const S: String; Const WordDelims: TCharSet;
                        Var Pos: Integer): String; Register;
Var
  I, Len: Integer;
Begin
  Len := 0;
  I := WordPosition(N, S, WordDelims);
  Pos := I;
  If I <> 0 Then
    While (I <= Length(S)) And Not(S[I] In WordDelims) Do
    Begin
      Inc(Len);
      SetLength(Result, Len);
      Result[Len] := S[I];
      Inc(I);
    End;
  SetLength(Result, Len);
End;

Function ExtractDelimited(N: Integer; Const S: String;
                          Const Delims: TCharSet): String; Register;
Var
  CurWord: Integer;
  I, Len, SLen: Integer;
Begin
  CurWord := 0;
  I := 1;
  Len := 0;
  SLen := Length(S);
  SetLength(Result, 0);
  While (I <= SLen) And (CurWord <> N) Do
  Begin
    If S[I] In Delims Then Inc(CurWord)
    Else
      If CurWord = N - 1 Then
      Begin
        Inc(Len);
        SetLength(Result, Len);
        Result[Len] := S[I];
      End;
    Inc(I);
  End;
End;

Function ExtractSubstr(Const S: String; Var Pos: Integer;
                       Const Delims: TCharSet): String; Register;
Var
  I: Integer;
Begin
  I := Pos;
  While (I <= Length(S)) And Not (S[I] In Delims) Do Inc(I);
  Result := Copy(S, Pos, I - Pos);
  If (I <= Length(S)) And (S[I] In Delims) Then Inc(I);
  Pos := I;
End;


Пример:
Код:
Var
  I: Integer;
  Temp: String;
Begin
  For I := 1 To WordCount(MyStr, [',']) Do
  Begin
    Temp := ExtractWord(I, MyStr, [',']);
    bla bla bla с Temp
  End;
End;

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


 

Member
Статус: Не в сети
Регистрация: 15.08.2004
Откуда: Красноярск
Шмендальф, самое простое – добавить таймер и закодировать событие на таймере:
Цитата:
работает пока только если обновить соединение нажатием на какую нибудь кнопку и тд
Максим, я думаю, человеку надо попроще что-нибудь выдать. Вроде копирования строк между запятыми, используя posex и copy. Например:
Код:
program Proga;

{$APPTYPE CONSOLE}

uses
  SysUtils, StrUtils, Classes;

function GetParamzz(s:string;var ss:TStringList):cardinal;
var
  i,j,k,n:cardinal;
begin
  k:=0;
  j:=0;
  n:=length(s);
  repeat
    i:=posex(',',s,j+1);
    if i=0 then
      i:=n+1;
    ss.Add(copy(s,j+1,i-j-1));
    j:=i;
    inc(k);
  until j>n;
  result:=k;
end;

var
  a:string;
  b:TStringList;
  c:cardinal;

begin
  b:=TStringList.Create;
  readln(a);
  writeln('Found '+inttostr(GetParamzz(a,b))+' parameters:');
  for c:=0 to b.Count-1 do
    writeln(b.Strings[c]);
  b.Free;
end.
Пока это написал, изматерил TurboDelphi как мог.. И еще дважды VPU Recover срабатывал.. К чему бы это?


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ckotick
В тех функциях и так используется по полной Pos и Copy. :)

А так, можно побыстрее код найти.
Код:
function Q_CountOfWords(const S: string; const Delimiters: TCharSet): Integer;
asm
        PUSH    EBX
        TEST    EAX,EAX
        JE      @@q0
        MOV     ECX,[EAX-4]
        MOV     EBX,EAX
        DEC     ECX
        JS      @@qz
        PUSH    ESI
        XOR     EAX,EAX
        JMP     @@lp2
@@iw:   INC     EAX
        DEC     ECX
        JS      @@ex
@@lp1:  MOVZX   ESI,BYTE PTR [EBX+ECX]
        BT      [EDX],ESI
        JC      @@nx
        DEC     ECX
        JNS     @@lp1
@@ex:   POP     ESI
        POP     EBX
        RET
@@lp2:  MOVZX   ESI,BYTE PTR [EBX+ECX]
        BT      [EDX],ESI
        JNC     @@iw
@@nx:   DEC     ECX
        JNS     @@lp2
        POP     ESI
        POP     EBX
        RET
@@qz:   XOR     EAX,EAX
@@q0:   POP     EBX
end;

function Q_GetWordN(OrdN: Integer; const S: string; const Delimiters: TCharSet): string;
var
  I,J,N: Integer;
  L: LongWord;
  P: PChar;
  A: Boolean;
begin
  L := Length(S);
  P := Pointer(S);
  A := False;
  N := 1;
  for I := 1 to L do
  begin
    if not (P^ in Delimiters) then
    begin
      if not A then
      begin
        if N = OrdN then
        begin
          N := L+1;
          Inc(P);
          for J := I+1 to L do
          begin
            if P^ in Delimiters then
            begin
              N := J;
              Break;
            end;
            Inc(P);
          end;
          Result := Copy(S,I,N-I);
          Exit;
        end;
        A := True;
        Inc(N);
      end;
    end else
      A := False;
    Inc(P);
  end;
  Result := '';
end;

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


 

Вообще-то подобную задачу можно решить гораздо легче, написав всего лишь несколько строчек кода.

Допустим, S - текстовая строка, в которой ведётся поиск параметров. Параметры разделяются запятыми.
StrList: TStringList - список строк, в который будут заноситься параметры.

Код:
StrList:=TStringList.Create;
StrList.CommaText:=S;
ListBox1.Items.Assign(StrList);


После чего ListBox будет заполнен параметрами. Для извлечения необходимого параметра можно обращаться к StrList по индексу.
StrList.Count - это число параметров.

А вы тут километровые процедуры придумываете :)


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
-Raptor-
АГА, так проще, но факт в том, что точно медленнее будет, да еще и память жрет :)

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


 

Member
Статус: Не в сети
Регистрация: 20.09.2006
Какая функция в делфи переводит что либо в двоичный код, какой тип для двоичного кода?


 

Member
Статус: Не в сети
Регистрация: 05.01.2003
Откуда: Москва
Фото: 2
ZALMAN0371
Код:
Function IntToBin(Value: Longint; Digits, Spaces: Integer): String; Register;
Begin
  Result := EmptyStr;
  If Digits > 32 Then Digits := 32;
  While Digits > 0 Do
  Begin
    If (Digits Mod Spaces) = 0 Then Result := Result + ' ';
    Dec(Digits);
    Result := Result + IntToStr((Value Shr Digits) And 1);
  End;
End;

Хотя можно без spaces сделать и тогда строчку
Код:
If (Digits Mod Spaces) = 0 Then Result := Result + ' ';
выкинуть

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


 

Member
Статус: Не в сети
Регистрация: 20.09.2006
Готовой функции значит нет..

что значит
Код:
((Value Shr Digits) And 1);
?


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

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


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

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


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

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