Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись параметров шрифта в файл 
:(
    Опции темы
docwar
Дата 14.11.2006, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 24.9.2006

Репутация: нет
Всего: нет



Цитата(Bima @  14.11.2006,  08:31 Найти цитируемый пост)
переменным ff, cc, ss присваевается Null !!!

А почему ноль? Ведь значения берутся из ини файла, значения получая из соответствующих переменных (Name,Color,Size). 
Ини-файл выглядит следующим образом:
Name=***
Color=***
Size=***
Цитата(Bima @  14.11.2006,  08:31 Найти цитируемый пост)
Вы создаете новый TStringList и пытаетесь вытащить название, цвет и размер компонента? или чего нибудь другого??? Компонент не визуальный, как можно из него вытащить размер и цвет??? 

Практически верно! Создаю СтрингЛист, чтобы обратиться через него к ини-файлу (см. пример файла выше).  Значения, стоящие после равно я и пытаюсь передать в переменые, а потом уже и в мемо.

Цитата(pandrew @  14.11.2006,  10:06 Найти цитируемый пост)
создается список (по умолчанию он пустой)

Почему? =) Никак не пойму...
Мне бы с кодом помочь, а то именно это вызывает у меня трудности! =) Но все равно спасибо!

Vyacheslav, с чего вы взяли, что у меня проблемы с понятием алгоритма? С того, что неправильно написал код или задаю простые для вас вопросы?
Цитата(Vyacheslav @  14.11.2006,  11:01 Найти цитируемый пост)
А зачем здесь strStyle 

Собственно... вы указали - я и написал...  А то, что написанное вами в ответе на мой вопрос мне не нужно, я не сообразил...
Цитата(Vyacheslav @  14.11.2006,  11:01 Найти цитируемый пост)
И не кажется, ли Вам , что использовать Label для вызова диалога настройки шрифта  это  выглядит весьма странно   Обычно для этого используется  Button (кнопка)

А что тут странного, что не хочу пользоваться кнопками? Мне Лейбл больше нравится и по дизайну подходит!
Цитата(Vyacheslav @  14.11.2006,  11:01 Найти цитируемый пост)
И зачем Вы постояннн используете промежуточные переменные  ff, cc, ss?

Просто напрямую записывать без переменных мне не удалось...
Цитата(Vyacheslav @  14.11.2006,  11:01 Найти цитируемый пост)
мне кажется, что Вы просто не совсем понимаете, что  сами  делаете.

Боюсь, что вам так только кажется! Если я не знаю, то не стал бы просить оптимизирвать код, а попросил бы ОБЬЯСНИТЬ его, что и не делаю!
Если же у кого-то здесь слабые нервы.. ну неужели Вы сразу стали высококлассным программистом, не задающим вопросы, кажущиеся тривиальными еще более "крутым" программерам?
Копировать чужой код? А как же мне тогда учиться, не разбирая чужие программы и исходники? Все пограммисты советуют разбирать не только примеры в книгах!
А причем здесь базовые понятия ООП и С++? Ну, неужели вы думаете, что я совершенно тупой, раз у меня вызывает проблему загрузка параметров из ини-файла или мне эти БАЗОВЫЕ понятия помогут решить мой вопрос? Абсурд!

P.s.Выражаю благодарность Bima за понимание!

Добавлено @ 19:20 
Цитата(Vyacheslav @  14.11.2006,  18:21 Найти цитируемый пост)
Наверное анализировать, разбирать его по косточкам и творчески применять в своем приложении, а не использовать "copy-past"

Именно поэтому и не воспользуюсь вашим кодом, а найду другое решение, следуя вашему совету.

Всем спасибо! Тему можно и закрыть, если кого-то раздражают мои вопросы.

PM MAIL   Вверх
Bima
Дата 15.11.2006, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Становится все интереснее и интереснее smile
Последние три сообщения читал и смеялся smile , кто то не выдерживает smile , кто-то сердится smile , прямо Санта-барбара какая-то.
Предлагаю всем забыть прошлые недорозумения и разобраться в поставленном вопросе.

Расмотрим твой код docwar :
Код

void __fastcall TForm5::FormCreate(TObject *Sender)
{
Memo1->Lines->LoadFromFile(PP + ExtractFileName("notes.txt"));

TIniFile* file=new TIniFile("D:/nazvanie.ini"); //Здесь понятно
TStringList* lst=new TStringList;//Здесь ты создаешь новый стринглист (и прошу заметить ПУСТОЙ)

AnsiString strStyle = "[fsBold, fsItalic]";
SetSetProp(Memo1->Font, "Style", strStyle); //Здесь операции над стилями

//А вот здесь начинается самое интересное
ff=lst->Values["Name"]; //Берем имя из пустого стринглиста и записываем в переменную ff
cc=lst->Values["Color"]; //анологично с цветом компонента
ss=lst->Values["Size"]; //анологично с размером
//где присваивание стринглисту всех тех параметров, которые ты пытаешься считать?
//если ты его создал, это не значит, что поля заполнятся автоматически, как при создании визуального компонента (типа лабела или тогоже стрингрида)

Memo1->Font->Name=ff; //Здесь ошибки нет, но по сути ты переменной присвоил пустое занчение
Memo1->Font->Color=StringToColor(cc); //а вот здесь ошибка будет в операторе StringToColor, так как он не может преобразовать пустое значение в колор
Memo1->Font->Size=ss.ToInt(); // здесь анологичная ошибка

delete lst,file;
}


надеюсь ты поймешь свои ошибки


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
pandrew
Дата 15.11.2006, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 27.3.2006

Репутация: 3
Всего: 3



Ну с кодом вам помогли, поэтому только ответ на вопрос:
Цитата(docwar)
Цитата(pandrew)

создается список (по умолчанию он пустой)

Почему? =) Никак не пойму...

Если вы посмотрите на определение списка (TStringList - список строк), вы узнаете что:
1)список это - упорядоченная последовательность элементов данных, каждый из которых может быть либо списком, либо атомарным неделимым элементом
2)список одна из базовых структур данных (тип контейнера) - класс в терминологии C++, а значит имеет методы и свойства

Когда вы создаете экземпляр списка вы создаете пустой контейнер (по простому: ящик в котором ничего нет). У ящика есть метод  LoadFromFile(), с помощью которых вы сможете его заполнить.
PM MAIL   Вверх
docwar
Дата 15.11.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 24.9.2006

Репутация: нет
Всего: нет



Учел всю критику, исправил код! Все работает, кроме загрузки стилей! Не пойму как использовать строку "Memo1->Font = TFontStyles() << fsBold << fsStyle;" smile
Код
void __fastcall TForm5::FormCreate(TObject *Sender)
{
TIniFile* file=new TIniFile("D:/nazvanie.ini");
TIniFile * ini;
ini=new TIniFile("D:/nazvanie.ini");

Memo1->Font->Name=ini->ReadString("Parametrs","Name", Memo1->Font->Name);
ss=ini->ReadString("Parametrs","Size", Memo1->Font->Size);
Memo1->Font->Size=ss.ToInt();
Memo1->Font->Color=StringToColor(ini->ReadString("Parametrs","Color", Memo1->Font->Name));

//Memo1->Font = TFontStyles() << fsBold << fsStyle;

delete file,ini;
}
//---------------------------------------------------------------------------
void __fastcall TForm5::Label1Click(TObject *Sender)
{
if(FontDialog1->Execute())
{
 Memo1->Font =  FontDialog1->Font;
 AnsiString strStyle = GetSetProp(Memo1->Font, "Style", "[]");
 ss=Memo1->Font->Size;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm5::FormClose(TObject *Sender, TCloseAction &Action)
{
TIniFile *ini;
ini=new TIniFile("D:/nazvanie.ini");

ini->WriteString("Parametrs","Name",Memo1->Font->Name);
ini->WriteString("Parametrs","Size",Memo1->Font->Size);
ini->WriteString("Parametrs","Color",Memo1->Font->Color);

ini->WriteString("Font","Style",GetSetProp(Memo1->Font, "Style", "[]"));

delete ini;

PM MAIL   Вверх
Vyacheslav
Дата 15.11.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Вы опять невнимательны smile
Строка  
Код

TIniFile* file=new TIniFile("D:/nazvanie.ini");// 

лишняя, так file нигде не используетс
Строка
Код

Memo1->Font = TFontStyles() << fsBold << fsStyle;

Означает, что содержимое стиля обнуляется и инициализируется заново конкретыми значениями. И здесь эта строка не нужна
Следует выполнить следущее
Код

 SetSetProp(Memo1->Font, "Style",ini->ReadString("Parametrs", "Style", "[]"));


Добавлено @ 13:04 
Эта строка также не нужна, так как strString нигде не используется
Код

AnsiString strStyle = GetSetProp(Memo1->Font, "Style", "[]");



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
docwar
Дата 15.11.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 24.9.2006

Репутация: нет
Всего: нет



Цитата(Vyacheslav @  15.11.2006,  13:00 Найти цитируемый пост)
Вы опять невнимательны 

Я предпочитаю немного другую формулировку - "Новичок"! )))

Vyacheslav, извините меня, пожалуйста, за немного резкий ответ с моей стороны! 
Vyacheslav, Bima, примите рейтинг в знак благодарности!
pandrew, Ваш рейтинг будет завтра (ограничение стоит).
Вопрос решен, всем больше спасибо! =) 

Это сообщение отредактировал(а) docwar - 15.11.2006, 14:17
PM MAIL   Вверх
docwar
Дата 15.11.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 24.9.2006

Репутация: нет
Всего: нет



И последний вопрос:
почему при изменении имени файла с параметрами шрифта вылазит ошибка, что MS Sans Serif не является интовским значением???

ini=new TIniFile(PP + ExtractFileName("fonts.ini"));

Если указать полный путь до файла, то ошибки нет...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1707 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.