Любимая мозоль
Автор Серж, 5 июня 2013, 09:55
0 Пользователи и 1 гость просматривают эту тему.
Друзья! Кто-нибудь встречался с ошибкой «Синтаксическая ошибка BASIC. Неожиданный символ: CRLF»?
Раньше мне приходилось часто ее видеть. Возникает после копирования кода из pdf или doc. Устраняется перенабором части кода и то не всегда.
Как я понимаю, связана с присутствием в коде какого-то непечатного символа.
Недавно опять встретил. Может кто сможет объяснить суть оного в более аргументированном виде.
Это одна строка разбита на две строки
+1
Это случается, когда длинные строки кода в угоду форматированию переносится со строки на строку. В редактор они так и вставляются — разными строками.
Нужно или символ подчеркивания добавить в конце первой строки, в качестве указания, что оператор еще не закончился, или просто разрыв строк удалить.
Кстати, это не единственная ошибка в этой серии. Если разрыв прошел по параметрам метода, можно нарваться и на сообщение вида «Синтаксическая ошибка BASIC. Неожиданный символ: ,.»
Да, действительно, возникает именно в местах, где текстовый редактор разделил одну строчку кода на две строки текста. Спасибо.
- Форум поддержки пользователей LibreOffice, Apache OpenOffice
-
►
Главная категория -
►
Basic -
►
Любимая мозоль
Добрый день.
Я новичок в теме макросов для LO. Задача: необходимо создать макрос в LO, который позволит копировать данные из страницы_1 (столбцы A-B, строк постоянно разное количество) в иные страницы_2..n по определенным условиям. Например, если в слове по столбцу A на странице_1 будет содержаться «55», то создаем лист «55» и копируем в него данную строку, таких условий множество. Но хотя бы сделать для одного условия. Как это сделать ума не приложу.
Добавлено через 3 часа 29 минут
Хотел бы добавить: сейчас вроде что-то получается, но ошибка «Синтаксическая ошибка Basic.
Неожиданный символ: CRLF.» на If. Уже все перепробовал.
Добавлено через 48 минут
Решил проблему. Осталось осуществить поиск по части содержимого в ячейки. Подскажите, пожалуйста, как сделать поиск по части слова при использовании If?
Добавлено через 37 минут
Еще одну проблему решил, как теперь осуществить запись на второй странице в первую пустую ячейку столбца?
Из моего поиска Google,
Imports System.Xml
для технологий .NET. Является ли StarBasic технологией .NET? Нет.
Вы можете создавать проекты на C# или VB.Net, использующие UNO API LibreOffice.
Или, может быть, вы хотите знать, как работать с XML в макросе LibreOffice. В этом случае есть много разных ответов. Лично я бы создал макрос Python-UNO и начал с
import xml.etree
. В качестве альтернативы UNO API предоставляет доступ к мощным XML-библиотекам, встроенным в LibreOffice.
Привет каждый раз, когда я пытаюсь запустить следующую программу:
L=-1
OPEN "tty.usbserial-FTG7QLFS:300,N,8,1,CS0,DS" FOR OUTPUT AS #1
WHILE L
J=63
MENU: PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT "WAITING FOR KEYSTROKE COMMAND"
PRINT "TYPE:"
PRINT " C-CLOSE SHUTTER"
PRINT " O-OPEN SHUTTER"
PRINT " R-RESET CONTROL"
PRINT " Q-TERMINATE PROGRAM"
PRINT
PRINT
START:
A$ = INKEY$
IF A$ = "O" THEN
PRINT #1,CHR$(J+1);
PRINT "SHUTTER OPEN COMMAND SENT"
GOSUB TIMEOUT
GOTO MENU
ELSEIF A$ = "C" THEN
PRINT #1,CHR$(J+2);
PRINT "SHUTTER CLOSE COMMAND SENT"
GOSUB TIMEOUT
GOTO MENU
ELSEIF A$ = "R" THE
PRINT #1,CHR$(J+3);
PRINT "CONTROL RESET COMMAND SENT"
GOSUB TIMEOUT
GOTO MENU
ELSEIF A$ = "Q" THEN
L = 0
PRINT "PROGRAM TERMINATED"
ELSE GOTO START
END IF
WEND
END
TIMEOUT: FOR I=1 TO 100:NEXT I
CLS 0
RETURN
Я получаю следующую ошибку «синтаксическая ошибка, отсутствует символ в строке 6», но в строке 6 есть только оператор печати, поэтому я не могу понять, что мне не хватает. Я запускаю программу через Chipmunk Basic в Mac OS X.
Благодарность
1 ответ
Похоже
OPEN "tty.usbserial-FTG7QLFS:300,N,8,1,CS0,DS" AS#1
Отсутствует режим доступа к файлу. Возможно, компилятор безуспешно ищет такие токены и сдается в следующих строках.
Документы Chipmunk BASIC говорят:
open STRINGEXPR for { input|output|append } as # FNUM
-- or --
open STRINGEXPR for random as # FNUM len = VAL
См. http://anoved.net/cbasdox/statements.html#open.
Я действительно не знаю Chipmunk BASIC, но и в других диалектах BASIC (QBasic, FreeBASIC, VisualBASIC Classic, …) вы должны указать, для каких действий вы хотите открыть свой файл.
Примеры FreeBASIC:
OPEN SomeFile FOR INPUT AS #1 ' input (read-only)
OPEN OtherFile FOR OUTPUT AS #2 ' write (replace existing file)
OPEN FooFile FOR BINARY AS #3 ' binary (read + write)
Это похоже на указание «r», «r+»,… при использовании fopen
в языках C-ish.
1
MrSnrub
14 Июн 2013 в 13:04
I was trying a sample program, to check the odd and even no’s and was getting an error as below,
#!/bin/bash
N=10
for i in 1..N
if [$i/2 == 0]
then
echo "even"
else
echo "Odd"
fi
Error:
./case.sh: line 5: syntax error near unexpected token `if'
./case.sh: line 5: `if [$i/2 == 0]'
EDITED :
#!/bin/bash
N=10
for i in 1..N
do
if(( ($i/2) == 0 ));
then
echo "even"
else
echo "Odd"
fi
done
error :
./case.sh: line 6: ((: (1..N/2) == 0 : syntax error: invalid arithmetic operator (error token is "..N/2) == 0 ")
Odd
Correct working code :
#!/bin/bash
N=3
for (( i=1; i <= N; i++ ));
#for i in 1..N; // This didnt work
do
if [[ $i/2 -eq 0 ]]
#if (( i/2 == 0 )); // This also worked
then
echo "even"
else
echo "Odd"
fi
done
asked Aug 3, 2014 at 13:37
AngusAngus
12.1k29 gold badges94 silver badges151 bronze badges
[ ]
or [[ ]]
needs spaces between its arguments. And in your case you should use [[ ]]
or (( ))
as [ ]
can’t handle division along with comparison:
if [[ 'i / 2' -eq 0 ]]; then
if (( (i / 2) == 0 )); then
for i in 1..N; do
should also be
for (( i = 1; i <= N; ++i )); do
You probably meant to have a form of brace expansion, but you can’t apply a parameter name on it:
{1..10} ## This will work.
{1..N} ## This will not work.
Using eval
may fix it but better go for the other form of for
loop instead.
answered Aug 3, 2014 at 13:50
konsoleboxkonsolebox
71.6k12 gold badges99 silver badges105 bronze badges
6
Try this :
#!/bin/bash
N=10
for i in $(seq 1 $N); do
if [ `expr $i % 2` -eq 0 ]
then
echo "even"
else
echo "Odd"
fi
done
1..N
is not a valid syntax in bash(though I think you might be coming from ruby background), you can use seq
.
answered Aug 3, 2014 at 13:51
Ashish GaurAshish Gaur
2,0302 gold badges17 silver badges32 bronze badges
2