| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Парочка вопросов |
| Автор: Aannttoonn 7.12.2005, 19:30 |
| Парочка вопросов. Заранее спасибо. 1. Моно ли в поле Memo обращаться к отдельной букве? Если нет то как считать код с файла, например txt-ишного, и, взависимости от того что там, что-то делать? 2. Как в StrinGrid дать возможность регулировать её размер пользователю. Возможно лучше открыть таблицу в новом окне, но как? |
| Автор: _hunter 7.12.2005, 19:35 |
| 1: Memo->Lines->Text[index] 2: поставь Align в alClient |
| Автор: Aannttoonn 7.12.2005, 20:21 |
| 1.Написал вот такую штуку для заполнения таблицы, где \n конец строки,а }- конец столбца и выдаёт при заполнении ошибку, указывая на dstring.h. Я думаю ошибка где-то здесь int i=0,j=0; char q[100]; for(i=0;i<kol_str;i++) { while((q[a]!='\n') || (j<kol_stol)) { while(q[a]!='}') q[a]=Memo1->Lines->Text[a++]; StringGrid1->Cells[i][j]=q; j++; a++; } } 2. Спасибо, просто у меня ни книг, ни чо нету по Билдеру, приходится тыкать куда попало. Одного знакомого уже достал спрашивать вот и решил в инет заглянуть. |
| Автор: _hunter 7.12.2005, 20:26 |
| не знаю что такое a ( объявления нет ) и чему оно равно, но скорее всего равно оно 0 ( в начальный момент ) а индексация у AnsiString идет с 1 |
| Автор: Aannttoonn 7.12.2005, 20:42 |
| Понятно. Теперь нашёл ещё одну ошибку, но думаю справлюсь. |
| Автор: sexton 8.12.2005, 09:03 |
| Aannttoonn, в качестве спасательного круга могу дать книжку Архангельского (или если есть возможность скачай сам). |
| Автор: Aannttoonn 8.12.2005, 16:49 |
| Возможности, всмысле денег, нету. Но я очень хочу. Слышал что это самая толковая книга по Борланду. Можешь кинуть на tupici@rambler.ru пожалуйста если есть электронный вариант?(или где найти) |
| Автор: Aannttoonn 8.12.2005, 17:10 |
| Большое спасибо. |
| Автор: Aannttoonn 9.12.2005, 11:39 |
| Смотрите пишу простую программу: void __fastcall TForm1::Button1Click(TObject *Sender) { int o=1; OpenDialog1->Execute(); Memo1->Lines->LoadFromFile(OpenDialog1->FileName); do Memo2->Lines->Text[o]=Memo1->Lines->Text[o++]; while(Memo1->Lines->Text[o]!='}'); } там должен загрузится файл с текстом оканчивающийся тогда когда найдётся }, но прога выдаёт ошибку. Скоко уже бьюсь, что за ерунда, Похоже я в этом деле нуб последний, если сегодня не найду ошибку, перейду на Делфи. sexton-с моей почты, блин, не качаются учебники, пишет докачка не поддерживается. Одно расстройство с этим Билдером. |
| Автор: _hunter 9.12.2005, 11:51 |
| а не проще ли найти первое вхождение: int pos = Memo1->Lines->Text.Pos('}'); а потом добавить этот текст: Memo2->Lines->Add(Memo1->Lines->Text.SubStr(1, pos)); |
| Автор: sexton 9.12.2005, 12:12 |
| Найди книжку в инете и скачай, ссылки на форуме есть. |
| Автор: Aannttoonn 12.12.2005, 21:41 |
| Жуткий глюк или чё. Пишу float a=0.0001; Edit1->Text=a; Выводит в Edit1: 9,99999974737875E-5 Объясните кто знает. |
| Автор: sexton 13.12.2005, 11:49 |
| FloatToStr(a) тебе в руки |
| Автор: Aannttoonn 13.12.2005, 13:02 |
| Пробовал. Не катит. Добавлено @ 13:07 hunter- Memo2->Lines->Add(Memo1->Lines->Text.SubStr(1, pos)); означает типа вывести текст до первого нахождения '}' или зачем тогда единица. И как сделать вывод текста от первого до второго вхождения. Спасибо! |
| Автор: _hunter 13.12.2005, 14:19 | ||||
да.
предварительно удалить текст до первого вхождения |
| Автор: Aannttoonn 13.12.2005, 14:21 |
| Весело. Попробую. |
| Автор: Aannttoonn 13.12.2005, 19:37 |
| Помоему функции StrToFlot и FloatToStr сдецл глючные. |
| Автор: Neitron 14.12.2005, 17:52 |
| А как ты хотел? |
| Автор: Aannttoonn 15.12.2005, 10:03 |
| Я хотел очень точно считать,а они, понимаешь ли, правильно не работают когда числа очень маленькие. Вот не знаю теперь как переводить из Str во Float. |
| Автор: Vyacheslav 15.12.2005, 10:17 | ||||
Господа. А что Вы хотели? Чем простите, отличаются два числа? 0.0001 и 9,99999974737875E-5. Вы машине хотя бы то скажите как вам нужно выводить
|
| Автор: Aannttoonn 15.12.2005, 10:52 |
| А как считать a с Edit1 |
| Автор: Vyacheslav 15.12.2005, 11:53 | ||
|
| Автор: Aannttoonn 16.12.2005, 22:09 | ||
Vyacheslav не получается!
|
| Автор: Vyacheslav 19.12.2005, 13:49 | ||
| Кто Вас учил так сравнивать float? Вы можете только проверить, что два числа равны друг другу с определенной прогрешностью. Это же не целые числа Хотя бы так, что ли
Это азы, которые надо знать при решении в численном виде. А так же, что если Вы ввели число 0.001, то оно в компьютере будет храниться только только, число равное ему с определенной погрешностью ВниманиеПодправил выражение сравнения float. В Builder 6 появились специальные функции для таких целей |
| Автор: Aannttoonn 19.12.2005, 21:29 |
| Но мне ведь изестно это число точно. Как мне следить за тем что комп его также точно понимает. Просто я делаю лабораторные и мне нужны только точные значения или ну с погрешностью там до 0,000000001. |
| Автор: Vyacheslav 20.12.2005, 09:05 |
| Вы не доверяете компьютеру? Как то я работал со сотрудницей, которая в свои обязанности включила проверку правильности расчета на компьютере А если Вам нужна большая точность, то Вы должны то надо тспользовать соответствующие приемы. Например вместо float, использовать double( long double) . Или даже скорее всего не long double, а BCD ( TBcd ). |
| Автор: Aannttoonn 23.12.2005, 12:04 |
| Как я понял чтобы в Memo обращаться к какой-нибудь строке надо либо заранее задать кол-во строк в Memo. Либо после заполнения одной строки организовывать переход на другую - как это сделать (когда пишу ”\n” остаются какие-то чёрые полоски). |
| Автор: _hunter 23.12.2005, 12:45 |
| можно и так Lines->Add() |
| Автор: abrekos 23.12.2005, 13:56 | ||
Используй в таких случаях double |
| Автор: Aannttoonn 24.12.2005, 22:24 |
| Как в Memo удалять символы до какого-нибудь знака? |