Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Memo1->Lines и переменные 
:(
    Опции темы
Vyacheslav
Дата 3.8.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не угадал. С фаловым чтением-записью на три строчки все же поболее вышло

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    std::auto_ptr<TMemoryStream> stream(new TMemoryStream());
    stream->LoadFromFile( "oldtext.txt");
    AnsiString text((char*)stream->Memory, stream->Size); 
    for (char i = 'а'; i <= 'я'; i++) {
          text = AnsiReplaceText(text, AnsiString(i), AnsiString(int(i-'а')));
    }
    stream->Write(text.c_str(), text.Length());
    stream->SaveToFile("newtext.txt");
  
}




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


iOS Lead Developer
****


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

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



codelord, я уже говорил об этом. У меня просто не создается файл newtext.txt! Почему он не создается? И c вашим кодом тоже не создается!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
codelord
Дата 3.8.2005, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



sim7, мне трудно ответить на твой вопрос, у меня все создается. Могу лишь посоветовать
указать точное место файла например "c:\\newtext.txt", у меня как-то было такое, что программа создавала файлы не в своем каталоге.


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
mr.Anderson
Дата 3.8.2005, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Да что такое! Не могу понять! Код-то верный, чего этому компайлеру еще надо!
codelord, посмотрите, может, я чего не так списал:
Код

void operationfile(void)    
{
FILE *in,*out;
if((in=fopen("oldtext.txt","r"))==NULL) MessageBox(NULL,"Ошибка открытия файла!","Сообщение",MB_ICONEXCLAMATION);
if((out=fopen("newtext.txt","w+"))==NULL) MessageBox(NULL,"Ошибка открытия второго файла!","Сообщение",MB_ICONEXCLAMATION);
int h=0;
int c;
while ((c=getc(in))!=EOF)
{
 if(c=='а') {c='1';fprintf(out,"%c",c);h++;}
 if(c=='3') {c='в';fprintf(out,"%c",c);h++;}
 if(c=='s') {c=20 ;fprintf(out,"%c",c);h++;}
}
fclose(in);
fclose(out);
if(h==0) MessageBox(NULL,"Не было преобразований!","Сообщение",MB_ICONEXCLAMATION);
}

Явное указание пути, по вашему совету, ни к чему не приводит. Файл упорно не создается.
Но, что самое интересное, даже если я вручную создам этот файл (до запуска программы), а способ открытия сменю на "w", с файлом все равно ничего не происходит! То есть, никаких изменений в него не записывается, и нового текста там тоже нет! Прога просто его "не видит"! Что за напасть?!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
codelord
Дата 3.8.2005, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



sim7 А первый мой вариант с файлами работает?


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
mr.Anderson
Дата 3.8.2005, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Нет, второй файл упорно не создается...
Может, какой файл заголовочный надо подключить? Может, просто функции вызова файла не работают?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 3.8.2005, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Ой, не могу! smile smile smile Нет, это ж надо так осрамиться! Нашел причину "не работы" программы. Вам интересно узнать, какая была причина? Кошмар! Даже сознаваться стыдно - столько возни - и из-за чего!
А суть была вот в чем: функцию работы с файлом я написал (кстати, вот еще раз ее код):
Код

void operationfile(void)
{
FILE *in,*out;
in=fopen("oldtext.txt","r");
out=fopen("newtext.txt","w+");
int c=0,h=0;
while ((c=getc(in))!=EOF)
{
 if(c=='а') {c='1';fprintf(out,"%c",c);h++;}
 if(c=='3') {c='#';fprintf(out,"%c",c);h++;}
 if(c=='s') {c='2';fprintf(out,"%c",c);h++;}
}
fclose(in);
fclose(out);
if(h==0) MessageBox(NULL,"Не было преобразований!","Ошибка",MB_ICONEXCLAMATION);
}

Ну, функцию-то написал. А вызвать ее забыл! smile
Но проблема работы с файлом остается актуальной. Вместо преобразованного текста в новом файле отображаются только квадратики... По крайней мере, через просмотр "Блокнотом". В принципе, и через Word, скорее всего, то ж самое будет.
Почему это может быть? Может, из-за присутствия русских букв? Но мне крайне надо, чтобы русские буквы были преобразованы...
Добавлено @ 20:44
Да, сейчас только что проверил - русские буквы не преобразовываются. В Word они просто не отображаются (т.е. они преобразованы, но их не видно...), а в Блокноте квадратики вместо символов. Как сделать, чтобы прога понимала кириллицу? Я так понимаю, надо локаль настроить, но как? Я о понятии "локаль" знаю из PHP, а в С++ я с ней вообще никогда не сталкивался.
Прошу помочь!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
codelord
Дата 3.8.2005, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Ладно написал сам, в общем как я понял тебе вместо русских букв нужны
их порядковые номера в русском алфавите, только вот про большие и маленькие буквы ты ничего не сказал,
ниже код, делает, то, что тебе надо, причем специально я сдал так, что на большую и маленькую букву будет показываться одна и таже цифра т.е а или А будет 1., сделал символы через зяпятую иначе, не видно смысла.
Код

FILE *in, *out;
in=fopen("c:\\test.txt","rb");
out=fopen("c:\\new.txt","wb");
int c=0;
while ((c=getc(in))!=EOF)
        {
        if(c>=192 && c<= 197) {c-=191; fprintf(out,"%d,",c); continue; }
        else if(c>=198 && c<= 223) {c-=190; fprintf(out,"%d,",c); continue; }
        else if(c>=224 && c<= 229) {c-=223; fprintf(out,"%d,",c); continue; }
        else if(c>=230 && c<= 255) {c-=222; fprintf(out,"%d,",c); continue; }
        else if(c==184) {c=7; fprintf(out,"%d,",c); continue;}
        else if(c==168) {c=7; fprintf(out,"%d,",c); continue;}
        else putc(c,out);
        }
fclose(in);
fclose(out);

кодировка win1251.
проверки на NULL думаю сам добавишь.


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
codelord
Дата 3.8.2005, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Vyacheslav Ради интереса сравни быстродействие со своим кодом.


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
mr.Anderson
Дата 4.8.2005, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



codelord, а по какому принципу вы все это делали? smile Какие-то циферки... И потом, у вас ведь не весь алфавит русский сделан, как мне доделать? В общем, расскажите, что вы в коде вашем делали, чтобы я мог продолжить САМ.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
codelord
Дата 4.8.2005, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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





Добавлено @ 10:29
sim7, что из русского алфавита тебе еще нужно?. Не понял почему не весь. там должно быть ровненько 66
букв. smile.
А по какому принципу, советую перечитать предыдущие посты, я раньше это уже объяснял, с буквой Я.
это сделано согласно кодировке win1251. Что именно не понятно?.

Это сообщение отредактировал(а) codelord - 4.8.2005, 10:54


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
codelord
Дата 4.8.2005, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Ладно давай еще разок,
есть строка
Код

if(c>=192 && c<= 197) {c-=191; fprintf(out,"%d,",c); continue; }

в ней компилятору объясняется если
с>=192(код буквы А) и c<=197(код буквы Е) то вычитаем 191 получаем соответственно 1,2,3,4,5,6 буквы.
дальше в кодировке идет не Ё а Ж поэтому дальше уже вычитаем 190.
т.е
а Ё проверим отдельно в строке
Код

else if(c==168) {c=7; fprintf(out,"%d,",c); continue;}

а дальше то же самое делаем с маленькими буквами.

смотри прикрепленный файл, это соответствие кодов, русским др. символам, думаю все поймешь.

Это сообщение отредактировал(а) codelord - 4.8.2005, 11:50

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  new.zip 0,91 Kb


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Vyacheslav
Дата 4.8.2005, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

std::ifstream inp("oldtext.txt");
std::ofstream out("newtext.txt");
for (;!inp.eof();) {
        unsigned char c;
        inp >> c;
        out << c - (( c >= 192 && c <= 255 )? (192):('/0')) << ',';
}

Добавлено @ 11:19
Цитата(codelord @ 3.8.2005, 23:03)
Vyacheslav Ради интереса сравни быстродействие со своим кодом.

Ну что будем по быстродействию и по лаконичности сравнивать?


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


iOS Lead Developer
****


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

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



Для меня бы лучше по быстродействию. smile А для вас - не знаю, сами решайте.
Добавлено @ 11:44
codelord, ваш файл не скачивается. Ни браузером, ни флэшгетом. Вместо него качается "index.php", в котором ничегошеньки нетуть...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
codelord
Дата 4.8.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Цитата(Vyacheslav @ 4.8.2005, 11:17)
Ну что будем по быстродействию и по лаконичности сравнивать?

будем smile, сравнение я беру на себя если хочешь, но
ваш последний код будет работать не правильно, где ваши буквы ё,Ё ?.
и поэтой причине порядок будет нарушен т.е Ж=8 а у вас она скорей всего будет 6.
а с маленькими буквами совсем беда(но тут автор умолчал.).
Добавлено @ 11:52
sim7 попробуй скачачть еще раз. !!!


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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