Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 22:28   #1
v0v41k
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 12
Вопрос Не работает БД из массива.

Задача: Разработать программу для роботы с БД. Программа должна уметь добавлять, искать, сохранять и загружать данные в файл. (Условие упрощено мной).

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

П.С. Я пишу программу под Линуксом на Лазарусе.

Код:
unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, Grids;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1;
    j: integer;
  t:array[1..500,1..500] of string;

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
i,k:integer;
lk1,lk2,sh,tm,s:STRING;
FileName:string;
begin
if combobox1.itemindex=0 then
begin
j:=j+1;
t[1,j]:='1';
lk1:=t[1,j];
t[2,j]:=Edit1.Text;
t[3,j]:=Edit2.Text;
t[4,j]:=Edit3.Text;
t[5,j]:=Edit4.Text;
t[6,j]:=Edit5.Text;
t[7,j]:=Edit6.Text;
t[8,j]:=Edit7.Text;
end
else
if combobox1.ItemIndex=1 then
begin
j:=j+1;
t[1,j]:='2';
lk2:=t[1,j];
t[2,j]:=Edit1.Text;
t[3,j]:=Edit2.Text;
t[4,j]:=Edit3.Text;
t[5,j]:=Edit4.Text;
t[6,j]:=Edit5.Text;
t[7,j]:=Edit6.Text;
t[8,j]:=Edit7.Text;
end
else
if ComboBox1.ItemIndex=2 then  //Здесь происходит поиск по первому параметру
begin
for k:=1 to j do
tm:=t[1,k];
    if tm=lk1 then     //проверяет чему ровна 1-я ячейка, в даном случее 1.
    begin
    s:=t[2,k];
    Edit1.Text:=t[2,k]; Edit2.Text:=t[3,k]; Edit3.Text:=t[4,k]; Edit4.Text:=t[5,k]; Edit5.Text:=t[6,k]; Edit6.Text:=t[7,k]; Edit7.Text:=t[8,k];
    end;
end
else
if combobox1.ItemIndex=3 then  //Здесь поиск по второму параметру
begin
for k:=1 to j do
tm:=t[1,j];
    if tm=lk2 then
    begin
        Edit1.Text:=t[2,k]; Edit2.Text:=t[3,k]; Edit3.Text:=t[4,k]; Edit4.Text:=t[5,k]; Edit5.Text:=t[6,k]; Edit6.Text:=t[7,k]; Edit7.Text:=t[8,k];
    end;
end;


end;

procedure TForm1.Button2Click(Sender: TObject);
var
si :TStringlist;
i , l:Integer;
Str:String;
begin
with TSaveDialog.Create(Owner) do
begin
// Выбор файла
DefaultExt:='.txt';
Filter:='Імя|*.txt';
if not Execute then exit;
// Сохранение содержимого сетки
si:=TStringList.Create;
si.add(IntToStr(j));
for l:=1 to j do
begin
for i:=1 to 8 do
begin
si.Add(t[i,j]);
end;
end;
// Сохраняем содержимое списка строк в файле
si.SaveToFile(FileName);
si.Free;

end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  f:textfile;
  temp,x,y: integer;
  tempstr: string;
  b:array[1..500,1..500] of string;
begin
If OpenDialog1.Execute then
  assignfile(f, OpenDialog1.FileName);
  reset(f);
  readln(F, j);
  for X:=1 to j do
    for y:=1 to 8 do
    begin
      readln(F,tempstr);
      t[y,x]:=tempstr;
    end;
   closefile(f);
end;

initialization
  {$I unit1.lrs}

end.
v0v41k вне форума Ответить с цитированием
Старый 19.12.2010, 22:49   #2
v0v41k
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 12
По умолчанию

Приму любую безумную идею, сам уже 2 часа не могу понять почему не работает.
v0v41k вне форума Ответить с цитированием
Старый 20.12.2010, 16:50   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Приму любую безумную идею
не знаю, насколько ещё актуально... да и код, мягко говоря, не очень хорош..
но, раз любую идею - начните с того, как Вы работаете с переменной J
(где начальное присвоение, где сбрасывается и т.д.? )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.12.2010, 20:15   #4
v0v41k
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 12
По умолчанию

Пока актуально. Да то что код на не очень хорош, я сам знаю, делалось "чтоб работало". Переменная J сначала приравнивают 0 у формкрейт потом увеличивается
на 1 при добавлении каждой строки массива. Получается что массив имеет размерность 8*J. Потом это дело сохраняется или загружается из текст файла.
v0v41k вне форума Ответить с цитированием
Старый 20.12.2010, 20:19   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Разработать программу для роботы с БД.
Что-то я ниразу не понял где тут БД?
В чем собственно костяк задачи?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.12.2010, 21:50   #6
v0v41k
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 12
По умолчанию

фокус задачки в том чтоб организовать подобие бд в паскале, тип рекорд я не перевариваю, а теперь делать под него уже поздно, я додумался сказать преподу что могу написать программу и без него. Функции которые надо было организовать: добавления новой записи в бд, поиск по бд, сохранения в текстовый файл и загрузка из него. Все это можно сделать используя массивы, работает все кроме поиска, уверен что ошибка мелочная.
v0v41k вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52
почему интеренет на Xp не работает, а на семерке работает Lenura Windows 18 04.10.2010 12:04
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04
[pascal]Сортировка массива методом прямого выбора, работает неадекватно. fatoldsun Помощь студентам 7 22.04.2009 19:42