Форум: "Базы";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
ВнизInterBase SQL и память Найти похожие ветки
← →
Castlevania (2007-01-18 12:42) [0]Мне нужно на Delphi сделать ф-цию которая может возвращать массив значений из БД InterBase, но попытка тупо запихнуть данные в массив не прокатывает - при каждом SQL.Next блок памяти заменяется на следующий (он один и тот же) и в результате все пункты массива содержат одинаковые данные.
Думал в сторону копирования блоков памяти, но, к сожалению, пользоваться этим не умею.
Подскажите, пожалуйста, варианты!
← →
Johnmen (2007-01-18 12:47) [1]Массив "блоков памяти".
← →
Castlevania (2007-01-18 12:49) [2]> к сожалению, пользоваться этим не умею.
В том-то и дело. Неужели нет стандартного решения?
← →
ЮЮ © (2007-01-18 12:50) [3]
> но попытка тупо запихнуть данные в массив не прокатывает
> Подскажите, пожалуйста, варианты!
Сначала свой покажи
← →
Castlevania (2007-01-18 12:56) [4]Ну в данный момент со своим проблема - дома он. Но попробую воспроизвести:
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;
примерно вот так.
← →
Castlevania (2007-01-18 12:58) [5]То есть, простите, Result := 0; Inc(Result); :)
← →
ЮЮ © (2007-01-18 12:58) [6]i в цикле изменять бы не мешало
← →
ЮЮ © (2007-01-18 13:00) [7]
> i в цикле изменять бы не мешало
Тьфу ты, увидел SetLength, подумал, что динамический массив :)
← →
Castlevania (2007-01-18 13:03) [8]ЮЮ
да фиг с ним с массивом. такой вариант не работает!
← →
ЮЮ © (2007-01-18 13:11) [9]Если ibSQL.Current нечто типа TIBXSQLDA, то и сохранять надо то, что этот объект содержит, ты же сохраняешь ссылку, а объект у ibSQL для этих целей используется один и тот же.
Чем сам DataSet не устраивает как "хранилище данных" ? Цель твоих действий?
← →
Castlevania (2007-01-18 13:15) [10]эээ.. DataSet, простите? Я в этом деле начинающий, ещё не всё изучил. А цель - возвращать данные куда-нибудь, ну типа mysql_fetch_array в php
Сохранять надо содержимое - я знаю. Но как? Вот вопрос!
← →
Johnmen (2007-01-18 13:41) [11]
> Inc(Result);
Это что значит?
> while not ibSQL.eof
Где Next?
PS
Если ты начинающий, м.б. не стОит лезть во внутреннюю кухню компонент прямого доступа (IBX). И сначала изучить общие принципы работы с БД?
← →
Castlevania (2007-01-18 14:02) [12]> Где Next?
Там же, где и Current. Написать забыл
> Inc(Result)
А как ты ячейку массива ещё сдвинешь в данном случае?
PS Мне сейчас не до изучения общих принципов, через 10 дней проект сдавать.
← →
Johnmen (2007-01-18 14:06) [13]
> А как ты ячейку массива ещё сдвинешь в данном случае?
Какого массива? Куда сдвину?
> Мне сейчас не до изучения общих принципов, через 10 дней
> проект сдавать.
А-а-а... Понятно. Вопросы отменяю.
← →
unknown © (2007-01-18 14:08) [14]
> Castlevania (18.01.07 14:02) [12]
> PS Мне сейчас не до изучения общих принципов, через 10 дней
> проект сдавать.
LOL :))))
← →
Sergey13 © (2007-01-18 14:08) [15]> [12] Castlevania (18.01.07 14:02)
> Мне нужно на Delphi сделать ф-цию которая может возвращать
> массив значений из БД InterBase
А что за данные, которые ИБ должен отдать? Окуда они? Как формируются?
> PS Мне сейчас не до изучения общих принципов, через 10 дней
> проект сдавать.
Похоже, если бы ты их изучил, ты бы уже проект сдал.
← →
Anatoly Podgoretsky (2007-01-18 20:29) [16]> Sergey13 (18.01.2007 14:08:15) [15]
> если бы ты их изучил, ты бы уже проект сдал.
Сомнительно
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c