[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    я про паскаль
     
  2. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Ты не про паскаль, а про PascalABC.NET. Тяжело быть экстрасенсом
     
  3. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    Точно
     
  4. seregahowe

    seregahowe Elder - Старейшина

    Joined:
    25 Jun 2011
    Messages:
    148
    Likes Received:
    36
    Reputations:
    15
    В обычном текстовике. Проблема в том, что данные могут быть введены в любые из 5-ти полей и необходимо искать в строке их совокупно, можно конечно прописать все возможные условия(if edit1.text > '' and edit3.text > '') и т.п., но хотелось бы сделать по другому и изящней) Спасибо
     
  5. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Пример записей, пока я себе лицо не разбил фейспалмом
     
  6. seregahowe

    seregahowe Elder - Старейшина

    Joined:
    25 Jun 2011
    Messages:
    148
    Likes Received:
    36
    Reputations:
    15
    1345234;aaaaaa vv;bnmvb;20;1
    3454356;bbbbbb gg;sdfrty;31;77

    и т.п

    разделитель любой
     
  7. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Число(какого размера?)
    Текст(какого размера?)
    Число(какого размера?)
    Число(какого размера?)
     
    1 person likes this.
  8. seregahowe

    seregahowe Elder - Старейшина

    Joined:
    25 Jun 2011
    Messages:
    148
    Likes Received:
    36
    Reputations:
    15
    размеры могут быть разными, ну короче типа телефонного справочника
     
  9. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Толи лыжи не едут... на сколько разными?! от минус бесконечности до плюс бесконечности?
     
  10. seregahowe

    seregahowe Elder - Старейшина

    Joined:
    25 Jun 2011
    Messages:
    148
    Likes Received:
    36
    Reputations:
    15
    Не знаю, представь себе телефонную базу

    79210000000;Пупкин Василий Петрович;Чумная;1;287
    534233;Пупкин Олег Петрович;ХЗКакая;100;23
    534231;Пупкин О. П.;ХЗКакая;10;21
    и т.п

    нужен универсальный метод который подойдет для любого формата
     
  11. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    PHP:
    type
      TRec 
    packed record
      a
    :string[255];
      
    b:string[255];
      
    c:string[255];
      
    d:integer;
      
    e:integer;
      
    end;

    var
      
    Rec:TRec;
      
    f:file of TRec;

    begin
      AssignFile
    (f'test.txt');


    // Считывание записи
    {
      
    Reset(f);
      
    Read(f,Rec);
      
    Read(f,Rec);
      
    Writeln(Rec.a,#13#10,Rec.b,#13#10,Rec.c);
    }

    // Добавление записи
    {
      
    Rewrite(f);

      
    Write('a: ');
      
    Readln(Rec.a);

      
    Write('b: ');
      
    Readln(Rec.b);

      
    Write('c: ');
      
    Readln(Rec.c);

      
    Write('d: ');
      
    Readln(Rec.d);

      
    Write('e: ');
      
    Readln(Rec.e);


      
    Write(f,Rec);
    }
    Считал запись, проверил каждое поле на соответствие, если не нашел, считываешь следующую.
     
  12. seregahowe

    seregahowe Elder - Старейшина

    Joined:
    25 Jun 2011
    Messages:
    148
    Likes Received:
    36
    Reputations:
    15
    Прошу прощения, но ничего не понял, можно понятнее? Консолька не обязательна

    Данные можно загрузить в TStringList
     
  13. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Зачем грузить куда-то данные?

    Есть структура записи:
    PHP:
     type
      TRec 
    packed record
      a
    :string[255];
      
    b:string[255];
      
    c:string[255];
      
    d:integer;
      
    e:integer;
      
    end
    a,b,c,d,e можешь переименовать по своему вкусу, типа: телефон, фио, улица, дом, кв.
    Поскольку диапазон Integer'a ограничен 2 147 483 647, то для номера используется String. В данном случае это не помешает, т.к. никакие мат операции производиться не будут.

    Вся работа программы основывается на этой структуре. Ты работаешь не со строкой из текстового документа, а с документом, состоящим из этих структур, о чем говорит объявление
    PHP:
    var
      
    f:file of TRec
    Чтобы считывать и записывать данные, мы создаем переменную
    PHP:
    Rec:TRec
    Открываем файл на чтение
    PHP:
      AssignFile(f'test.txt');
      
    Reset(f);
    Считываем из файла первую запись, в переменную типа TRec(наша структура)
    PHP:
      Read(f,Rec);
    Далее, если тебе нужно сделать поиск, например по телефону, пишешь что-то вроде:
    PHP:
    If pos(SearchStringRec.Number)<>0
    Then 
    //нашелся номер или его часть
    Else //совпадений не найдено
    Перебор всего документа производится как и обычного текстового файла: while not eof(f) do begin
    **********************************************
    А чтобы добавлять записи, нужно просто заполнить уже объявленную структуру, через переменную Rec
    PHP:
    Rec.Number:=Edit1.Text;
    Rec.FIO:=Edit2.Text;
    ...
    И затем эта структура записывается в файл
    PHP:
    Write(f,Rec); 
    Так понятней?
     
  14. seregahowe

    seregahowe Elder - Старейшина

    Joined:
    25 Jun 2011
    Messages:
    148
    Likes Received:
    36
    Reputations:
    15
    Я поднял вопрос только потому, что искать придется по самым разным комбинациям, тел + фио и т.п., а вы мне пишете как искать по одному полю, что тут сказать, if pos('edit1.text', base.strings) - вот так, да, понятно. Или вышесказанный алгоритм позволяет искать по всевозможно введенным вариантам??
     
  15. seregahowe

    seregahowe Elder - Старейшина

    Joined:
    25 Jun 2011
    Messages:
    148
    Likes Received:
    36
    Reputations:
    15
    Сделал через условия if edit1.txt <> '' then
    begin
    if (pos(... и т.п.

    Если у кого будут другие решения, пишите. Спасибо!

    зы: может кому пригодится:

    [​IMG]

    скачать (27kb)

    Читает информацию из base.txt
     
    #9695 seregahowe, 5 Nov 2014
    Last edited: 5 Nov 2014
  16. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    Можно ли как-то сделать заполнение ListBox не в строчку, а по всему объему? Т.е. чтобы в небольшом по размеру окне ListBox'a текст не был написан сплошной строкой и, соответственно, не улетел в никуда, а строка была разбита на части которые бы были друг под другом
     
  17. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    StringGrid в помощь
     
  18. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    как запустить одну форму по нажатию кнопки на другой форме? Формы уже предварительно созданы.
    show не катит
     
    #9698 Compton, 21 Nov 2014
    Last edited: 21 Nov 2014
  19. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    На первой форме
     
  20. qw1mb1

    qw1mb1 Member

    Joined:
    8 Feb 2013
    Messages:
    113
    Likes Received:
    16
    Reputations:
    8
    почему Show не катит?
     
Thread Status:
Not open for further replies.