![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
InterBase SQL и память [D7, IB7.1]
Castlevania © (2007-01-18 12:42:00)Мне нужно на Delphi сделать ф-цию которая может возвращать массив значений из БД InterBase, но попытка тупо запихнуть данные в массив не прокатывает - при каждом SQL.Next блок памяти заменяется на следующий (он один и тот же) и в результате все пункты массива содержат одинаковые данные.
Думал в сторону копирования блоков памяти, но, к сожалению, пользоваться этим не умею.
Подскажите, пожалуйста, варианты!
Anatoly Podgoretsky (2007-01-18 20:29:00) [1]> Sergey13 (18.01.2007 14:08:15) [15]
> если бы ты их изучил, ты бы уже проект сдал.
Сомнительно
unknown (2007-01-18 14:08:00) [2]
> Castlevania (18.01.07 14:02) [12]
> PS Мне сейчас не до изучения общих принципов, через 10 дней
> проект сдавать.
LOL :))))
Sergey13 (2007-01-18 14:08:00) [3]> [12] Castlevania (18.01.07 14:02)
> Мне нужно на Delphi сделать ф-цию которая может возвращать
> массив значений из БД InterBase
А что за данные, которые ИБ должен отдать? Окуда они? Как формируются?
> PS Мне сейчас не до изучения общих принципов, через 10 дней
> проект сдавать.
Похоже, если бы ты их изучил, ты бы уже проект сдал.
Johnmen (2007-01-18 14:06:00) [4]
> А как ты ячейку массива ещё сдвинешь в данном случае?
Какого массива? Куда сдвину?
> Мне сейчас не до изучения общих принципов, через 10 дней
> проект сдавать.
А-а-а... Понятно. Вопросы отменяю.
Castlevania (2007-01-18 14:02:00) [5]> Где Next?
Там же, где и Current. Написать забыл
> Inc(Result)
А как ты ячейку массива ещё сдвинешь в данном случае?
PS Мне сейчас не до изучения общих принципов, через 10 дней проект сдавать.
Johnmen (2007-01-18 13:41:00) [6]
> Inc(Result);
Это что значит?
> while not ibSQL.eof
Где Next?
PS
Если ты начинающий, м.б. не стОит лезть во внутреннюю кухню компонент прямого доступа (IBX). И сначала изучить общие принципы работы с БД?
Castlevania (2007-01-18 13:15:00) [7]эээ.. DataSet, простите? Я в этом деле начинающий, ещё не всё изучил. А цель - возвращать данные куда-нибудь, ну типа mysql_fetch_array в php
Сохранять надо содержимое - я знаю. Но как? Вот вопрос!
ЮЮ (2007-01-18 13:11:00) [8]Если ibSQL.Current нечто типа TIBXSQLDA, то и сохранять надо то, что этот объект содержит, ты же сохраняешь ссылку, а объект у ibSQL для этих целей используется один и тот же.
Чем сам DataSet не устраивает как "хранилище данных" ? Цель твоих действий?
Castlevania (2007-01-18 13:03:00) [9]ЮЮ
да фиг с ним с массивом. такой вариант не работает!
ЮЮ (2007-01-18 13:00:00) [10]
> i в цикле изменять бы не мешало
Тьфу ты, увидел SetLength, подумал, что динамический массив :)
Castlevania (2007-01-18 12:58:00) [11]То есть, простите, Result := 0; Inc(Result); :)
ЮЮ (2007-01-18 12:58:00) [12]i в цикле изменять бы не мешало
Castlevania (2007-01-18 12:56:00) [13]Ну в данный момент со своим проблема - дома он. Но попробую воспроизвести:
type TFetchData=record
Count: Integer;
Data: Array of TIBXSQLDA;
end;
function Fetch(const Query: String): TFetchData;
begin
SetLength(Result.Data, 65535); // больше всё равно не надо
I := 0;
with ExecQuery(ibSQL, ibTrn) {это моя ф-ция} do while not ibSQL.eof do begin
Result.Data[I] := ibSQL.Current;
Inc(Result);
end;
FinalizeSQL(ibSQL, ibTrn);
end;
примерно вот так.
ЮЮ (2007-01-18 12:50:00) [14]
> но попытка тупо запихнуть данные в массив не прокатывает
> Подскажите, пожалуйста, варианты!
Сначала свой покажи
Castlevania (2007-01-18 12:49:00) [15]> к сожалению, пользоваться этим не умею.
В том-то и дело. Неужели нет стандартного решения?
Johnmen (2007-01-18 12:47:00) [16]Массив "блоков памяти".