imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 14.06.2008, 23:21     # 21
Emelman
Full Member
 
Аватар для Emelman
 
Регистрация: 30.07.2004
Адрес: Санкт-Петербург
Пол: Male
Сообщения: 544

Emelman Гурее всех гурых :-)
Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)
Я решил не заморачиваться с файлами и загнал все данные в базу данных. Так, возможно, и работать быстрее будет. А информация насчёт путей всё равно полезная. Тем более, что в интернете по этому вопросу практически ничего нет.
Emelman вне форума  
Старый 17.06.2008, 15:51     # 22
Emelman
Full Member
 
Аватар для Emelman
 
Регистрация: 30.07.2004
Адрес: Санкт-Петербург
Пол: Male
Сообщения: 544

Emelman Гурее всех гурых :-)
Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)
Вроде бы всё работает, разве что напрягает, что данные записываются в конец базы данных ("Append();"). Чтобы данные записывались сразу по сортировке хотел написать следующий код:
Код:
Table1->First();
while (!Table1->Eof)
        {if (Table1->Fields->FieldByName("Author")->AsString<author2)
              {Table1->Cancel(); Table1->Next();}
         else {Table1->Insert();
               Table1->FieldByName("Author")->AsString=author1;
               Table1->Post();
               return;}
        }
Но, видимо, операция сравнения (<,>) со строками не работает. Потому что в результате добавление новой записи происходит в начало базы. Подскажите, как правильно реализовать задуманное.
Emelman вне форума  
Старый 17.06.2008, 16:07     # 23
PhoeniX
Advanced Member
 
Аватар для PhoeniX
 
Регистрация: 12.05.2004
Пол: Male
Сообщения: 482

PhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собойPhoeniX Имеются все основания чтобы гордиться собой
сравнение должно работать со строками (как я понимаю тут AnsiString)

к сожалению, из приведенного куска кода не ясно что такое author1 и author2, но предполагаю, что в сравнении и присвоении все же должна быть одна и та же переменная

проверь это, может все и дело в том что не с той переменной сравниваешь?
__________________
Этот мир для таких, как мы,
Этот мир обречен на нас,
Но реальность не изменить,
И живем мы в ней здесь и сейчас.
(C) С.Маврин
PhoeniX вне форума  
Старый 17.06.2008, 16:12     # 24
Emelman
Full Member
 
Аватар для Emelman
 
Регистрация: 30.07.2004
Адрес: Санкт-Петербург
Пол: Male
Сообщения: 544

Emelman Гурее всех гурых :-)
Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)
PhoeniX,
Вторые сутки коверкаю код как могу, и за всё это время не увидел опечатки!!! Когда же я прекращу тупить?... Спасибо за замечание!
Emelman вне форума  
Старый 17.06.2008, 22:39     # 25
Emelman
Full Member
 
Аватар для Emelman
 
Регистрация: 30.07.2004
Адрес: Санкт-Петербург
Пол: Male
Сообщения: 544

Emelman Гурее всех гурых :-)
Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)
А можно ли отучить C++ различать регистр при сравнении? А то на данный момент получается, что "Z" (Зет большое)<"a"(А малое).
Emelman вне форума  
Старый 17.06.2008, 22:58     # 26
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
сравнивай в верхнем регистре (должна быть функция ToUpper или чтото вроде того)
crawler вне форума  
Старый 18.06.2008, 01:14     # 27
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Цитата:
Сообщение от Emelman Посмотреть сообщение
разве что напрягает, что данные записываются в конец базы данных ("Append();"). Чтобы данные записывались сразу по сортировке хотел написать следующий код
Вообще какое-то странное занятие пытаться писать данные в БД в порядке сортировки. Никогда нельзя быть уверенным как БД физически сохранит запись. Нужно пользоваться сортировкой при выборке данных, или задавать ее уже в визуальных компонентах.
ЕЖ вне форума  
Старый 19.06.2008, 19:29     # 28
Emelman
Full Member
 
Аватар для Emelman
 
Регистрация: 30.07.2004
Адрес: Санкт-Петербург
Пол: Male
Сообщения: 544

Emelman Гурее всех гурых :-)
Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)
Цитата:
Сообщение от crawler Посмотреть сообщение
сравнивай в верхнем регистре (должна быть функция ToUpper или чтото вроде того)
К сожалению, конкретно данная команда не известна компилятору, да и похожих я не нашёл.
Цитата:
Сообщение от ЕЖ Посмотреть сообщение
Вообще какое-то странное занятие пытаться писать данные в БД в порядке сортировки. Никогда нельзя быть уверенным как БД физически сохранит запись. Нужно пользоваться сортировкой при выборке данных, или задавать ее уже в визуальных компонентах.
Что значит "как БД физически сохранит запись"? Разве, если я записал автора "Гоголя" между "Достоевским" и "Толстым", то при следующем запуске программы "Гоголь" может оказаться в другом месте?
Во всяком случае на данный момент сортированность данных не нарушается, и это для меня самое главное. Единственное, что мне сейчас не нравится - что при данном написании кода "Толстой" (с большой буквы) записывается в базу перед "достоевским" (с маленькой буквы). Т.е. при сравнении строк идёт проверка в следующем порядке: сначала идут заглавные латинские буквы "A-Z", затем прописные латинские буквы "a-z", затем идут заглавные русские буквы "А-Я" и уже в конце идут прописные русские буквы "а-я". Мне же хотелось, чтобы заглавные и прописные буквы расценивались одинаково.
Т.е. на данный момент записи хранятся в следующем виде:
Цитата:
Author2
author1
author3
Автор5
автор4
автор6
А хотелось бы, чтобы записи хранились вот так:
Цитата:
author1
Author2
author3
автор4
Автор5
автор6
Emelman вне форума  
Старый 19.06.2008, 22:43     # 29
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Emelman, нельзя обсуждать эти вопросы не зная конкретную используемую СУБД. Тут надо думать не на уровне программы, а на уровне СУБД.

Если это какая-то элементарная файловая БД типа .dbf, то вполне возможно что ее драйвер позволяет физически втиснуть новую запись между двумя старыми, при этом, что естественно, ему придется физически перечитать и перезаписать со сдвигом на диск всю часть файла-БД после этой новой записи, что несет большие накладные расходы.

В серьезных же СУБД, типа MS SQL Server / Oracle такого не происходит. Единственный язык, который они понимают - это SQL, который для записи новых данных использует только одну команду - INSERT, без всякого указания места, куда эту запись вставить. Только сервер решает куда она физически будет записана, и это вполне может оказаться вообще другой диск, если так сконфигурирована база. Соответственно при следующей выборке данных трудно говорить о порядке и полагаться на что-то. Для достижения нужного результата лучше самому указывать сортировку по некому признаку.

Что касается сортировки по умолчанию и сравнения строчных и прописных букв - это опять же настройки collation конкретного драйвера/СУБД, хотя указывая сортировку в SQL-запросе всегда можно задать и свои условия, что-то типа ORDER BY UPPER(Name).
ЕЖ вне форума  
Старый 19.06.2008, 23:04     # 30
Emelman
Full Member
 
Аватар для Emelman
 
Регистрация: 30.07.2004
Адрес: Санкт-Петербург
Пол: Male
Сообщения: 544

Emelman Гурее всех гурых :-)
Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)Emelman Гурее всех гурых :-)
Я писал данную программу с вашей помощью и помощью нескольких книг типа "C++ Builder для начинающих". Как в книгах было написано про простую базу данных, так я её и создал. А именно: Запустил "BDE Administrator" и создал в нём базу данных с характеристиками:
Цитата:
Type: STANDART
DEFAULT DRIVER: PARADOX
ENABLE BCD: FALSE
База данных имеет расширение *.db. Используется исключительно для хранения данных. Никаких фильтров, никаких выборок, запросов и т.п. вещей. Только запись/стирание записей. Хотя советовать что-либо изменить, наверное, уже поздно. Разве что на заметку, на будущее, т.к. это была дипломная работа, и защита её состоится через 5 дней.
Emelman вне форума  
Старый 05.05.2009, 19:16     # 31
дима
Guest
 
Сообщения: n/a

Помогите"SOS"
Мне нужно найти количество положительных чисел в каждом столбце 2х массива.
Заранее спасибо.
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 09:47.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.