Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Вниз

Вопрос о временный таблицах   Найти похожие ветки 

 
Сергей М. ©   (2006-05-18 12:04) [40]


> всё это происходит во время работы  обработки


Что подразумевается под "обработкой" ?
Иллюстрируй в коде ..


 
Officeman   (2006-05-18 12:05) [41]

>В чем же проблема ?

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


 
Сергей М. ©   (2006-05-18 12:14) [42]

А что ты под "именем таблички" подразумеваешь ?
В моем примере у таблиц нет имен ..


 
ЮЮ ©   (2006-05-18 12:15) [43]

>не знаю как задать другое имя

var
 first, second, current: <когда с типом например определишься>;
 first и second создаешь и инициализируешь. Отрисовываешь и просчитываешь current, при переключении установив current := first (second)

второй вариант:

var
 tab: array of  <когда с типом например определишься>;
 Idx: integer;

 Отрисовываешь и просчитываешь tab[Idx]. Переключаешься изменением Idx


 
Jeer ©   (2006-05-18 12:26) [44]

Officeman   (18.05.06 12:05) [41]

В общем, начни с чтения умных книжек.


 
Сергей М. ©   (2006-05-18 13:02) [45]

const

MaxRows = 200;
MaxCols = 10000;

type

PTempTable = ^TTempTable
TTempTable = array[0..MaxRows-1, 0..MaxCols-1] of Integer;

PTempRow = ^TTempRow;
TTempRow = array[0..MaxCols-1] of Integer;

PTempCol = ^TTempCol;
TTempCol = array[0..MaxRows-1] of Integer;

PTempTableInfo = ^TTempTableInfo;
TTempTableInfo = packed record
  Rows, Cols: Integer;
  TableData: PTempTable;
end;

var
 TableList: TList;

...
 TableList := TList.Create;
...

function CreateTable(const Rows, Cols: Integer): Integer;
var
 Info: PTempTableInfo;
begin
 New(Info);
 try
   Info.Rows := Rows;
   Info.Cols := Cols;
   GetMem(Info.TableData, Rows * Cols * SizeOf(Integer));
   try
     InitTable(Info.TableData);
     Result := TableList.Add(Info);
   except
     FreeMem(Info.TableData);
     raise;
   end;      
 except
   Dispose(Info);
   raise;
 end;
end;

procedure DestroyTable(const Index: Integer);
var
 Info: PTempTableInfo;
begin
 Info := TableList[i];
 FreeMem(Info.TableData);
 Dispose(Info);
 TableList.Delete(i);
end;

procedure DestroyTableList;
var
 i: Integer;
begin
 for i := 0 to TableList.Count - 1 do DestroyTable(TableList[i]);
 TableList.Free;
end;

...

//пример обращения к элементу 3-й таблицы

PTempTable(TabeleList[2])[5, 6] := ...


 
Officeman   (2006-05-18 13:02) [46]

to ЮЮ, погодите плиз. ещё раз. я тех кто в танке. )
Помогите разобратся! Вы потрясающие учителя.



unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Mask, ToolEdit, CurrEdit;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   name34: TButton;
   Num: TRxCalcEdit;
   Memo2: TMemo;
   Memo3: TMemo;
   Button2: TButton;
   Num2: TRxCalcEdit;
   procedure Button1Click(Sender: TObject);
   procedure name34Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 const
MaxRows = 5000;    //колонок
MaxCols = 100;            //строк

type
PTempTable = ^TTempTable;    //  ??? такого в F1 вапще нет

TTempTable = array[0..MaxRows-1, 0..MaxCols-1] of Integer;
PTempRow = ^TTempRow;
TTempRow = array[0..MaxCols-1] of Integer;
PTempCol = ^TTempCol;
TTempCol = array[0..MaxRows-1] of Integer;

var
Form1: TForm1;
TempTable: PTempTable;   //  "TempTable"  это и есть имя таблички ?
TempRow: PTempRow;
TempCol: PTempCol;
Rows: Integer = MaxRows;
Cols: Integer = MaxCols;
Row, Col: Integer;
i: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

memo1.Visible:=false;
memo1.Clear;
memo2.Clear;

 Rows:= 100;
 Cols:= 20;

// создаём табличку под инедификатором  "TempTable"   ???????????
GetMem(TempTable, Rows * Cols * SizeOf(Integer));  

//заполняем значениями
   for Row := 0 to Rows-1 do //столбец
     for Col := 0 to Cols - 1 do begin //строка
      i := random(3);
      TempTable[Row, Col] := i;
      Inc(i);
      memo1.Lines.Add(inttostr(Row)+". "+inttostr(i));
     end;
  FreeMem(TempCol);
memo1.Visible:=true;
 end;

procedure TForm1.name34Click(Sender: TObject);
begin

Col := 3        

//штудируем все колонки, начиная с нулевой, получаем значения СТРОКИ 3
  for Row := 0 to Rows-2 do begin
    memo2.Lines.Add(inttostr(Col+1)+". "+inttostr(TempTable[row, col]+1));

//вот тут вапще косяк. в табличке записано 2,1,3. когда вытаскиваю.
//то получаю 1,0,2.  ровно на единицу меньше. пришлось приписать +1
//голову сломал, ответа не нашёл.


  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin

Row := 3   // значения текущей колонки !!!!!!!!!!!

//штудируем все Строчки, начиная с нулевой.
  for Col := 0 to Cols-1 do begin

// тоже самое +1 пришлось делать. чтобы правильные значения взять.
//я чёто неправильно сделал! непонимаю в чём гвоздь


    memo3.Lines.Add(inttostr(Row)+". "+inttostr(TempTable[row, col]+1));

  end;

end;

end.



 
Officeman   (2006-05-18 13:09) [47]

>//пример обращения к элементу 3-й таблицы
>PTempTable(TabeleList[2])[5, 6] := ...


т.е. ты создаёшь список из нескольких(трёх) таблиц?     [0,1,2]   так ?


 
Сергей М. ©   (2006-05-18 13:21) [48]


> Officeman   (18.05.06 13:09) [47]


Я их не создаю.
Я лишь привел пример процедур/ф-ций, манипулирующих созданием/уничтожением таблицы с занесением ее в список и удаления из списка.

Сколько раз ты вызовешь ф-цию Createtable, столько таблиц и будет создано.

В строчке

PTempTable(TabeleList[2])[5, 6] := ...

подразумевается, что Createtable() была вызвана тобой не менее 3-х раз


 
Сергей М. ©   (2006-05-18 13:23) [49]


> TempTable: PTempTable;   //  "TempTable"  это и есть имя
> таблички ?


Это не "имя таблички", это символьный идентификатор переменной, предназначенной для хранения указателя на данные типа  TTempTable


 
Сергей М. ©   (2006-05-18 13:32) [50]

Наврал.

Вот так будет правильней :

procedure InitTable(const Table: PTempTableInfo);
var Row, Col: Integer;
begin
 with Info^ do
 for Row := 0 to Rows - 1 do
   for Col := 0 to Cols - 1 do
     TableData[Row, Col] := ...;
end;

function CreateTable(const Rows, Cols: Integer): Integer;
var
Info: PTempTableInfo;
begin
New(Info);
try
  Info.Rows := Rows;
  Info.Cols := Cols;
  GetMem(Info.TableData, Rows * Cols * SizeOf(Integer));
  try
    InitTable(Info);
    Result := TableList.Add(Info);
  except
    FreeMem(Info.TableData);
    raise;
  end;      
except
  Dispose(Info);
  raise;
end;
end;


 
Officeman   (2006-05-18 14:08) [51]

Спасибо за краткий экскурс. если приду в очередной тупик подниму здесь вопросик. спасибо.


 
Officeman   (2006-05-19 09:18) [52]


Result := TableList.Add(Info);


как правильно инициализировать  TableList  , в этом случае


 
Сергей М. ©   (2006-05-19 09:24) [53]

Инициализация происходит строчкой выше:

InitTable(Info);



Страницы: 1 2 вся ветка

Форум: "Основная";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.019 c
1-1147778258
pheonix
2006-05-16 15:17
2006.06.25
определение высоты панели задач


2-1149335087
Iehbr
2006-06-03 15:44
2006.06.25
DECIMALSEPARATOR


15-1149110794
Kolan
2006-06-01 01:26
2006.06.25
Среда виснет при отладки в потоках.


2-1149588259
D@Nger
2006-06-06 14:04
2006.06.25
Ошибка при поиске методом Locate


2-1149688963
newbie2
2006-06-07 18:02
2006.06.25
Появился плавающий access violation





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский