Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1174432039
koha
2007-03-21 02:07
2007.04.08
Function WinSvc.GetServiceDisplayName


1-1171042308
solo777
2007-02-09 20:31
2007.04.08
Рисование на канве


1-1171135629
чуть помедленнее
2007-02-10 22:27
2007.04.08
TYPE CAST


6-1161544337
Axis_of_Evil
2006-10-22 23:12
2007.04.08
TWSocket


6-1161532212
Kit
2006-10-22 19:50
2007.04.08
раздавать в сеть мультимедиа по TCP.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский