Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по С   Найти похожие ветки 

 
saNat ©   (2004-10-19 01:17) [0]

Доброго времени суток.
Задача: выровнять первый абзац (заголовок) по центру, а остальной текст - по ширине. Делаю так: загружаю файл в Memo, определяю максимальную длину строки в пикселях, добавляю пробелы по мере необходимости между словами. Вопрос в том, что нужно найти конец абзаца. Как я помню, в С строка заканчивается нулевым символом. А как его считать?. Т.е. понятно, что нужно читать посимвольно Lines->Strings[i][j]. А как сам "\0" увидеть.

С уважением...


 
jack128 ©   (2004-10-19 03:25) [1]

saNat ©   (19.10.04 1:17)
Как я помню, в С строка заканчивается нулевым символом

в дельфи тоже (если имется в виду длинная строка)

saNat ©   (19.10.04 1:17)
А как его считать?.

что значить считать?? На какой он позиции?? Ну раз строка им заканчивается, то очевидно на Length(s) (отчет от нуля)
saNat ©   (19.10.04 1:17)
А как сам "\0" увидеть.
никак. это непечатный символ.

> Вопрос в том, что нужно найти конец абзаца

это вообще не имеет никакого отнашения к нулевому символу.


 
080D:07BBh ©   (2004-10-19 06:37) [2]

посмотри в описании
        \t - табуляция(то же самое что tab жать)
        \n - перенос строки
        \r - возврат коретки


 
saNat ©   (2004-10-19 08:14) [3]

В плане я под вечер снова затупил - нужно искать 13?


 
saNat ©   (2004-10-19 08:14) [4]

...ну в С - \n


 
080D:07BBh ©   (2004-10-19 10:56) [5]

нет надо искать
if(x = "\n") printf("вот оно ");


 
080D:07BBh ©   (2004-10-19 10:57) [6]

нет надо искать
if(x == "\n") printf("вот оно ");


 
saNat ©   (2004-10-19 12:22) [7]

Ну не получается...

int LinesCount=0;
while (LinesCount<TextEdit->Lines->Count)
{
 int SymbolNumber=1;
 while (SymbolNumber<=TextEdit->Lines->Strings[LinesCount].Length())
  {
   if (TextEdit->Lines->Strings[LinesCount][SymbolNumber]=="\n")
    {
     ShowMessage("Enter");
    }
   SymbolNumber++;
  };
 LinesCount++;
}


... не работает


 
saNat ©   (2004-10-19 14:35) [8]

Что делать и как быть?


 
saNat ©   (2004-10-19 22:59) [9]

Мастера, выручайте пожалуйста... Просто программу нужно отдать завтра к 8 утра, а я откровенно заблудился.
Задачу "куска" можно поставить так. Из файла загружаю в TMemo текст. Нужно первый абзац сделать заголовком - выровнять по середине, а остальные выравнять по ширине. С выравниванием проблем нет. Нужно выделить абзацы. Да, я знаю, что признаке в языке С - "\n". Как его достать?. Можно рабочий кусок кода. Впервые так горю.

С уважением...


 
saNat ©   (2004-10-20 00:05) [10]

Разберем на примере:
Пусть это MyMemo

-----------------------
|От топота копыт пыль |
|по полю летит        |
|Мама мыла раму       |
|                     |
----------------------
Итак, первый абзац "от топота копыт пыль по полю летит". Так как ширины Мемо не хватило, то он разбил абзац на две строки. Второй абзац "Мама мыла раму" является третьей строкой.

Что я делал:

int LineNumber=0;
while (LineNumber<MyMemo->Lines->Count)
 {
  int ThisSymbol=1;
  while (ThisSymbol<=MyMemo->Lines->Strings[LineNumber].Length())
   {
    if (MyMemo->Lines->Strings[LineNumber][ThisSymbol]=="\n")
     {
      ShowMessage("Абзац");
     }
    ThisSymbol++;
   }
  LineNumber++;
 }


Ни одного срабатывания по "\n" нету


 
wnew ©   (2004-10-20 00:51) [11]

saNat ©   (20.10.04 0:05) [10]
А ты попробуй вместо "\n" вставить любой другой символ, думаю - тоже не будет срабатываний.
Попытайся записать так if char((MyMemo->Lines->Strings[LineNumber][ThisSymbol])=="\n")


 
saNat ©   (2004-10-20 00:55) [12]

to wnew: проверил. Поставил вместо "\n" "а". Сработало как положено. Сделал рекомендованную Вами конструкцию. Без изменений: "\n" - не работает, "а" - работает


 
wnew ©   (2004-10-20 01:04) [13]

Ну тогда, коли не хочет работать, как в нормальном Си  с "\n" - то, раз уж у тебя C++ Builder, попробуй, как в Pascal, т.е. Delphi :) - #13;


 
wnew ©   (2004-10-20 01:08) [14]

В Open Watcom без проблем находит "\n";

void main(void)
{
 char x[20];

 strcpy(x,"test\ntest\n\n\n");
 cout << x;
 if (char(x[4]) == ("\n"))
   cout << "gefunden";
 else cout << "nicht gefunden";
}


 
saNat ©   (2004-10-20 06:09) [15]

Дело в том,ИМХО, что абзац разбит на строки Lines->String[i] и "\n" потерялся... фиг знает... уже утро..


 
saNat ©   (2004-10-20 06:09) [16]

Дело в том,ИМХО, что абзац разбит на строки Lines->String[i] и "\n" потерялся... фиг знает... уже утро..


 
saNat ©   (2004-10-20 06:09) [17]

Дело в том,ИМХО, что абзац разбит на строки Lines->String[i] и "\n" потерялся... фиг знает... уже утро..



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.037 c
4-1096671072
НовичОк
2004-10-02 02:51
2004.11.07
Заголовки кнопок в другом приложении


4-1096373747
AP3AMAC
2004-09-28 16:15
2004.11.07
Как поймать событие ONPRINT ?


14-1097978150
Думкин
2004-10-17 05:55
2004.11.07
С днем рождения! 17 октября


14-1098185744
Ilya____
2004-10-19 15:35
2004.11.07
GetFileSize


1-1098351753
V l a d i m i r
2004-10-21 13:42
2004.11.07
Округление





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