Форум: "Потрепаться";
Текущий архив: 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.042 c