Syntax error expected but for found

Ошибка "Fatal: Syntax error, ";" expected but "." found" Lazarus Решение и ответ на вопрос 2185902

stkapler

0 / 0 / 0

Регистрация: 07.02.2018

Сообщений: 19

1

07.02.2018, 04:52. Показов 22776. Ответов 14

Метки delphi, lazarus, pascal (Все метки)


звучит задание: создай программу, в которой можно преподнести введенное пользователем число к указанному степеню.

покапавшись на всяких форумах и тп, написал код. вроде бы все ок. но при компиляции выдает ошибку в 41 строке unit1.pas(42,17) Fatal: Syntax error, «;» expected but «.» found

ниже код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    E1: TEdit;
    E2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  x, n, y: extended;
 
implementation
              function Power(const Base, Exponent: Extended): Extended;
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin;
   x:=strtofloat(e1.text);
   n:=strtofloat(e2.text);
   y:=Power(n, x);
   label2.caption:=floattostrf(s, ffFixed, 5,2);
end;
 
end.

ps. уже сам нашел несколько ошибок, но все равно проблема осталась

Добавлено через 8 минут
*СТРОКА 37, А НЕ 41

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

07.02.2018, 04:52

Ответы с готовыми решениями:

Ошибка «project1.lpr(35,0) Fatal: Syntax error, «BEGIN» expected but «end of file» found»
type
tarray= array of integer;
var
a:tarray;
m,s,k:integer;
procedure…

Ошибка: project1.lpr(1,1) Fatal: Syntax error, «BEGIN» expected but «end of file» found
project1.lpr(1,1) Fatal: Syntax error, "BEGIN" expected but "end of file" found
выдает эту ошибку…

Ошибка: Fatal: Syntax error, «;» expected but «identifier Mas» found.
Где здесь синтаксическая ошибка( "mas:=A2;" )?

procedure TForm1.Button1Click(Sender: TObject);

Ошибка Fatal: Syntax error, «;» expected but «is» found
Не могу нигде прописать часть кода вот эт type tproc = procedure is…

14

Джоуи

1073 / 635 / 240

Регистрация: 05.05.2015

Сообщений: 3,546

Записей в блоге: 2

07.02.2018, 05:48

2

Цитата
Сообщение от stkapler
Посмотреть сообщение

implementation function Power(const Base, Exponent: Extended): Extended;

Директива implementation означает раздел реализации, а не описания. Вы не реализовали функцию Power, а просто ее описали (нету begin end). Кстати, переименуйте как-нибудь, а то функция Power уже есть в паскале



0



Модератор

8255 / 5477 / 2249

Регистрация: 21.01.2014

Сообщений: 23,578

Записей в блоге: 3

07.02.2018, 06:04

3

Цитата
Сообщение от stkapler
Посмотреть сообщение

НЕ ЗНАЮ ЧТО ДЕЛАТЬ!

 Комментарий модератора 
1. Создавать темы в нужном разделе
2. Создавать темы с осмысленным названием
3. Не дублировать свои темы!!!

Это официальное предупреждение: Ваши действия — это нарушение правил форума, а именно пп 4.2, 5.4 и 5.5

3. В секции uses подключить модуль Math
4. Удалить к чертовой матери строку 32
5. В строке 42 заменить переменную внутри FloatToStr(…) Вы присвоили результат возведения в степень в переменную Y, а там у Вас какая-то, не пойми откуда взявшаяся, S…



0



stkapler

0 / 0 / 0

Регистрация: 07.02.2018

Сообщений: 19

07.02.2018, 12:22

 [ТС]

4

сделал все как вы сказали
но теперь выдает ошибку в сроке 39 и 40

unit1.pas(39,25) Error: Incompatible type for arg no. 1: Got «TTranslateString», expected «Int64»

unit1.pas(39,25) Error: Incompatible type for arg no. 1: Got «TTranslateString», expected «Int64»

сами строки

Pascal
1
2
   x:=FloatToStr(E1.Text);
   n:=FloatToStr(E2.Text);

у меня есть готовый ответ на это задание, даже 2. но все таки хочу найти решение самостоятельно, пусть даже при помощи форумчан)



0



Модератор

8255 / 5477 / 2249

Регистрация: 21.01.2014

Сообщений: 23,578

Записей в блоге: 3

07.02.2018, 12:35

5

stkapler, Вы строку переводите в число, поэтому функция StrToFloat()

Добавлено через 7 минут
В стартовом посте все правильно ведь было написано!



0



0 / 0 / 0

Регистрация: 07.02.2018

Сообщений: 19

07.02.2018, 12:36

 [ТС]

6

все хорошо, спасибо! проект компилируется и запускается

НО!! при вводе чисел и после нажатия кнопки — ничего не происходит. а должен быть результат

visible включен. шрифт норм, цвет отличный от фона. ничего не понимаю



0



Модератор

8255 / 5477 / 2249

Регистрация: 21.01.2014

Сообщений: 23,578

Записей в блоге: 3

07.02.2018, 12:41

7

А Вы этот обработчик создавали, или так просто написали?



0



0 / 0 / 0

Регистрация: 07.02.2018

Сообщений: 19

07.02.2018, 12:43

 [ТС]

8

нет, не создавал
но в планах для красивого оформления программы это есть
но сейчас просто функционал кода
и результат не отображается



0



Модератор

8255 / 5477 / 2249

Регистрация: 21.01.2014

Сообщений: 23,578

Записей в блоге: 3

07.02.2018, 14:48

9

Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Не по теме:

Цитата
Сообщение от D1973
Посмотреть сообщение

А Вы этот обработчик создавали

Цитата
Сообщение от stkapler
Посмотреть сообщение

нет, не создавал но в планах для красивого оформления программы это есть

:scratch:

stkapler, возьмите любую книжку по самым-самым азам создания программ в среде Delphi/Lazarus и обязательно прочтите ее… Ну или программирование бросайте прямо сейчас…
Все, что от Вас требовалось — это положить на форму кнопку, сделать на этой кнопке двойной клик и в получившейся заготовке обработчика события написать код.



0



0 / 0 / 0

Регистрация: 07.02.2018

Сообщений: 19

07.02.2018, 19:11

 [ТС]

10

спасибо, теперь все ок!
мне тут пол года учиться осталось, до сдам эти проекты — и буду гулять
вообще не пойму, зачем в 2018 дают учить паскаль
но за помощь — огромное спасибо!



0



Hretgir

07.02.2018, 20:01

Не по теме:

Цитата
Сообщение от stkapler
Посмотреть сообщение

зачем в 2018 дают учить паскаль

действительно, ребята учатся на начальников Била Гейтса, а их Паскаль учить заставляют, маразм да и только.



0



0 / 0 / 0

Регистрация: 07.02.2018

Сообщений: 19

07.02.2018, 20:08

 [ТС]

12

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



0



Hretgir

07.02.2018, 20:37

Не по теме:

а что-бы вы хотели учить в 2018? просто интересно…
вот я-бы хотел учить нейросети, а получается что по факту мне нужен паскаль, на настоящий момент.
хотя можете не отвечать, я только мешаю.



0



stkapler

07.02.2018, 20:58

 [ТС]

Не по теме:

я себе сейчас спокойно учу видеомонтаж в свое свободное время, но учить паскаль — навязывает школьная программа



0



Cyborg Drone

08.02.2018, 09:25


    Ошибка «Fatal: Syntax error, «;» expected but «.» found»

Не по теме:

Да не спорьте. Не нужно знать язык программирования — значит, не нужно. Личное дело каждого. С другой стороны, те, кто всерьёз занимается программированием, как правило, знает несколько языков программирования, и выучить ещё один, как правило, никакая не проблема.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

08.02.2018, 09:25

Fatal: Syntax error, «BEGIN» expected but «end of file» found
Доброго времени суток! Вот простой код, который, по идее, находит корни квадратного уравнения….

Unit1.pas(41,5) Fatal: Syntax error, «;» expected but «identifier Y» found
Привет всем.Сделал программу,вроде как должна работать,не пойму в чем проблема(программа вся…

Fatal: Syntax error, «BEGIN» expected but «identifier BITMAP» found
Добрый день! пишу программу по методичке, выдает вот такие ошибки:
unit1.pas(78,1) Fatal: Syntax…

Unit1.pas(66,4) Fatal: Syntax error, «;» expected but «.» found
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms,…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

15

Topic: problem with Fatal: Syntax error, «;» expected but «:» found  (Read 5228 times)

Hello, I am a beginner in Lazarus and the Pascal language.
my problem is that every time I try to run my program it gives me this error: Fatal: syntax error, «;» expected but found.
in case there is any doubt this is the program.
program division;
var
a,b,c:double;
begin
writeln(‘extra division’);
writeln(‘ingresa el divisor’);
readln(a);
writeln(‘ingresa el dividendo’);
readln(b);
if (b=0) then
begin
writeln(‘math error’);
readln;
end
else
begin
c:a/b;
writeln(‘el resultado de la division es’,c:4:2);
readln;
end;

I would be very grateful to you if you could help me solve this problem.


Logged



Logged


HOMEWORK ???

  1. PROGRAM Division;

  2. VAR dDividend,dDivisor,dQuotient:Double;

  3. BEGIN

  4. Writeln(‘extra division’);

  5. Writeln(‘ingresa el dividendo’);

  6. Readln(dDividend);

  7. Writeln(‘ingresa el divisor’);

  8. Readln(dDivisor);

  9. If (dDivisor = 0)

  10. Then

  11. Begin

  12. Writeln(‘math error’);

  13. Readln;

  14. End

  15. Else

  16. Begin

  17.     dQuotient:= dDividend/dDivisor;

  18. Writeln(‘el resultado de la division es:  ‘,dQuotient:4:2);

  19. Readln;

  20. END;

  21. END.


Logged

Windows 7 Pro (x64 Sp1) & Windows XP Pro (x86 Sp3).



Logged


Hello, I am a beginner in Lazarus and the Pascal language.
my problem is that every time I try to run my program it gives me this error: Fatal: syntax error, «;» expected but found.
in case there is any doubt this is the program.
program division;
var
a,b,c:double;
begin
writeln(‘extra division’);
writeln(‘ingresa el divisor’);
readln(a);
writeln(‘ingresa el dividendo’);
readln(b);
if (b=0) then
begin
writeln(‘math error’);
readln;
end
else
begin
c:a/b;
writeln(‘el resultado de la division es’,c:4:2);
readln;
end;

I would be very grateful to you if you could help me solve this problem.


Logged

One System to rule them all, One Code to find them,
One IDE to bring them all, and to the Framework bind them,
in the Land of Redmond, where the Windows lie
———————————————————————
Code is like a joke: If you have to explain it, it’s bad


This line:

  1. c:a/b;

Needs to be changed to this:

  1. c := a/b;

Also, you need to add the following at the bottom of the file to close your 1st ‘begin’ and the unit as a whole:

  1. end.

So, the entire code should look like this:

  1. program division;

  2. var

  3.   a, b, c : double;

  4. begin

  5. WriteLn(‘extra division’);

  6. WriteLn(‘ingresa el divisor’);

  7. ReadLn(a);

  8. WriteLn(‘ingresa el dividendo’);

  9. ReadLn(b);

  10. if (b=0) then

  11. begin

  12. WriteLn(‘math error’);

  13. ReadLn;

  14. end

  15. else

  16. begin

  17.     c := a / b; // <— CHANGED!!!

  18. WriteLn(‘el resultado de la division es’, c:4:2);

  19. ReadLn;

  20. end;

  21. end. // <— ADDED!!!

« Last Edit: June 19, 2020, 08:31:39 pm by Remy Lebeau »


Logged


@Remy Lebeau: almost … one is missing …  :P
You don’t get the flower pot !


Logged

Windows 7 Pro (x64 Sp1) & Windows XP Pro (x86 Sp3).


@Remy Lebeau: almost … one is missing …  :P

Which one?  I don’t see anything missing in the code I posted.


Logged


I don’t see anything missing in the code I posted.

Correct, nothing is missing, but the «WriteLn» order is not optimal…

Divisor (a), Dividend (b), Check b = 0 (Dividend?), Divisor/Dividend ?

In my world you have to do it like this:
Dividend / Divisor = Quotient   :)

As I said, you don’t get the flower pot …  :D


Logged

Windows 7 Pro (x64 Sp1) & Windows XP Pro (x86 Sp3).


Hi!

Dont battle about the poor dividende.

We could teach him the way the C boys do it:
Division by zero is no error. Never.

SetExceptionMask([exZeroDivide, exInvalidOp, exDenormalized, exOverflow, exUnderflow, exPrecision]);
….

You dont have to ask for dividing by zero anymore.
The price you have to pay:
Incorrect results and a system crash every now and then.
We all know that from Windows.

Winni


Logged


Dont battle about the poor dividende.

We could teach him the way the C boys do it:
Division by zero is no error. Never.

I think RAW is referring just to the terminology in the WriteLn’s: Remy’s code asks for the divisor when he means the dividend and viceversa. Just a small oversight ;D


Logged

Turbo Pascal 3 CP/M — Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 — 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.


…code asks for the divisor when he means the dividend and viceversa…

@lucamar: the flowers are all yours …  :)

by the way: no battle at all, just a little hint that the code isn’t optimal …  :)


Logged

Windows 7 Pro (x64 Sp1) & Windows XP Pro (x86 Sp3).


I think RAW is referring just to the terminology in the WriteLn’s: Remy’s code asks for the divisor when he means the dividend and viceversa. Just a small oversight ;D

It is not MY code, it is the OP’s code.  I just fixed the syntax errors, not the logic errors.


Logged


0. <Что-то1> expected but <Что-то2> found. Обычно это сообщение возникает при синтаксической ошибке.Например,в случае не баланса скобок,компилятор сообщит: ‘)’ expected but ‘;’ found (вместо ожидавшейся скобки найдена запятая).
Компилятор часто сообщает, что ‘end’ ожидается, например: x:= 5,7; здесь неуместен разделитель-запятая, а сообщается про end. (‘END’ expected but ‘,’ found)

1. <Имя> is not a type identifier. Данное <Имя> не является именем типа.

2. ‘;’ not allowed before ‘Else’. Перед else нельзя ставить точку с запятой

3. Abstract method must be virtual or dynamic. Абстрактный метод должен быть виртуальным или динамическим.

4. Ambiguous overloaded call to <Имя блока>. Компилятор не может однозначно выбрать перегружаемый блок. Измените параметр.

5. Array type required. Ошибка возникает в случаях, когда в индексе элемента массива указано больше уровней, чем предусмотрено описанием, и если массив не описан. Например, после объявления двумерного массива х или простой переменной х ошибочно записывают элемент х[2,1,1] (в нем показано три измерения).

6. Assignment to FOR-loop variable <Имя>. Присваивание значения параметру FOR-цикла в теле цикла.
Например, вследствие описки дважды используется имя i в кратном цикле:
For i:= 1 to n do For i:= 1 to m do …

7. Break or Continue outside of loop. Break или Continue — не в цикле.

8. Cannot initialize local variables. Локальные переменные запрещено инициализировать (задавать им значения при описании).

9. Cannot assign to/read a read-only/write-only property. Присвоение значения свойству read/only и чтение свойства write/only запрещены.

10. Constant expression expectedВ этом месте должна стоять константа или константное выражение, например константа выбора в структуре Case.

11. Constant expression violates subrange bounds. Выход значения константы из диапазона. Контроль не полон. Например, «сойдет с рук» присваивание x:=3000000000, где х имеет тип integer, но значение х будет искажено.

12. Constant or type identifier expected. Требуется имя типа или тип-диапазон.

13. Could not compile used unit <Имя>Компиляция присоединенного модуля <Имя> невозможна.

14. Data type too large. Тип определяет структуру размером более 2 Гбайт; это слишком много.

15. Declaration expected but <Что-то> found. Пропущено описание или оператор.

16. Declaration of <Имя> differs from previous declarations. Данный заголовок блока не соответствует упреждающему объявлению блока.

17. Default parameter <Имя> must be by-value or constant. Необязательный параметр (со значением по умолчанию) не должен вызываться по ссылке.

18. Expression expected. В этом месте программы должно стоять выражение.

19. Expression too complicated. Выражение излишне сложно для компиляции.

20. File type not allowed here. В этом месте или в этой роли файловую переменную нельзя использовать. Например, она не может быть формальным параметром-значением.

21. For loop control variable must be simple local variable. Параметр цикла должен быть простой локальной (описанной в этом же блоке) переменной.

22. For loop control variable must have ordinal type. Параметр цикла должен иметь порядковый тип. Вещественный тип запрещен.

23. Function needs result type. В заголовке функции надо указывать тип ее результата.

24. Identifier expected but <Что-то> found. В этом месте должно стоять имя. Например, пропущено имя
функции после Function.

25. Identifier redeclared <Имя>.<Имя> описано повторно, но в пределах блока имя можно описать лишь раз. Проверьте, не обозначена ли локальная переменная тем же именем, что и формальный параметр блока.

26. Illegal character in input file <знак>. Запретный знак, например «русская» буква, либо вы оставили скобку }, убрав открывающую скобку {.

27. Illegal type in Read/Readln (Write/Writeln) statement. Элемент запрещенного типа в списке ввода/вывода.

28. Incompatible types <указание типов>. Несоответствие типов по присваиванию или типов операндов одной операции. Сообщение выдается и при неверном использовании структур. Например, z — запись, ошибочно записано присваивание z:= 0 (работать надо с полями записи).

29. Invalid function result type. Недопустимый тип результата функции.

30. Label already defined: <Метка>. <Метка> уже помечает другой оператор.

31. Left side cannot be assigned to. He может быть такой левой части в присваивании. Примеры: попытка присвоить значение файловой переменной, присвоение значения формальному параметру-константе.

32. Line too long. В строке программного текста больше 255 знаков.

33. Low bound exceeds high bound. Нижняя граница превышает верхнюю.

34. Missing operator or semicolon.Пропуск операции (например перед скобкой) или пропуск точки с запятой. При пропуске ‘;’ маркер ошибки стоит на очередном предложении (объявлении или операторе).

35. Missing parameter type. He указан тип формального параметра-значения или параметра процедурного типа.

36. Not enough actual parametersHe хватает фактических параметров.

37. Need to specify at least one dimension. Нужно задавать в операторе SetLength хотя бы один размер динамического массива.

38. Number of elements differs from declaration. Число элементов в структурной константе не соответствует ее описанию.

39. Operator not applicable to this operand type. Операция не применима к операндам данного типа. Например: ‘А’ or ‘В’; ‘Text1’* ‘Text2’.

40. Order of fields in record constant differs from declaration. Порядок полей в записи-константе не соответствует описанию записи.

41. Ordinal type required. Требуется порядковый тип (например, в индексе).

42. Out of memory. Компилятору не хватает памяти.

43. Statement expected but <Что-то> found. В этом месте должен стоять оператор. Сообщение выдается во всех случаях, когда в тело блока или секцию инициализации ошибочно помещают описание (<Что-то>). Ошибочная форма обращения к процедуре Procedure <Имя> или к функции Function <Имя> также вызывает сообщение.

44. Sets may have at most 256 elements. Множество (тип Set) не может содержать более 256 элементов.

45. Slice standard function only allowed as open array argument. Функцию Slice можно использовать лишь как фактический параметр

46. Statement not allowed in interface part. Предложения в секции интерфейса программного модуля недопустимы.

47. Syntax error in real number. Синтаксическая ошибка в записи числа вещественного типа.

48. There is no overload version of <Имя> that can be called with these arguments.Не предусмотрен перегружаемый блок <Имя>, который мог бы вызываться с таким аргументом. Пример: IntToStr(x), где х – выражение вещественного типа.

49. Too many actual parameters. Фактических параметров больше, чем формальных.

50. Type actual and formal var parameters must be identical. Тип фактического параметра должен быть идентичен типу
формального параметра-переменной.

51. Type of expression must be <Тип>. Выражение должно быть указанного типа. Например,после While и Until должно стоять логическое выражение.

52. Undeclared identifier: <Имя>Не описано <Имя>. Проверьте есть ли описание в нужном месте,нет ли опечаток в имени. Если указано имя компонента формы, проверьте,поместили ли компонент на данную форму.

53. Unexpected end of file in comment started on line <N>. Неожиданный конец файла при незавершенном комментарии, начало комментария — в строке N.

54. Unit name mismatch: <Имя>. Имя модуля ошибочно.

55. Unsatisfied forward or external declaration <Имя>. Отсутствует описание блока, объявление которого было дано (заголовок в интерфейсе или в описании объектного типа, либо упреждающее описание).

56. Unterminate string. He закрыта апострофом строка-константа типа string.

Не удаляйте прежний вариант кода,пока не убедитесь,что ошибка устранена. Лучше на время закомментировать код,заключив его в скобки: { код } 

Компилятор не анализирует, как будет выполняться программа, поэтому выход значения индекса из диапазона выявляет только если индекс задан константным выражением. Деление на ноль вообще пропускается, кроме оператора div, в случае если делитель — константное выражение.

Модератор: Модераторы

Просьба не сильно ругаться, подскажите новичку. Вот взял пример из документации
<span style=’color:darkblue’>Program strlen ;
Uses strings ;
Const P : pchar = ‘This i s a PCHAR string.’;
begin
Writeln ( ‘Наша строка = ‘ ,P) ;
Writeln ( ‘Длина строки = ‘ ,StrLen(P)) ;
end.</span>

Просто хочу освоить функции, но вот что-то не выходит…. :(
Система FreeBSD 5.4 , выполняю команду
fpc str_len.pas
получаю ошибку
# fpc ./str_len.pas
Free Pascal Compiler version 2.0.0 [2005/05/15] for i386
Copyright © 1993-2005 by Florian Klaempfl
Target OS: FreeBSD/ELF for i386
Compiling ./str_len.pas
str_len.pas(6,37) Fatal: Syntax error, «.» expected but «(» found
str_len.pas(6,37) Error: Compilation aborted
Error: /usr/local/bin/ppc386 returned an error exitcode (normal if you did not specifiy a source file to be compiled)

И не только с этой функцией такая же проблема.
И сразу еще одна просьба, при попытке сделать exe для win32 выполняю команду fpc -Twin32 file.pas
Получаю
Error: Util -as not found, switching to external linking
Куда копать?

baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
  • Профиль
  • Сайт

Сообщение SovNarKom » 25.10.2005 16:37:41

1. А почему прога называется strlen, а файл str_len?
Назови это всё Test_strlen или как угодно но не strlen. Чувствуешь смысл?

2. А у тебя версия только для FreeBSD, исходники есть?

SovNarKom
постоялец
 
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
  • Профиль
  • Сайт
  • ICQ

Сообщение baklan » 25.10.2005 16:50:53

Спасибо за оперативный ответ, действительно, сменил имя программы и все сработало, а в доках прочитал, что название может быть любым и не влияет на программу. Видимо нельзя использовать служебные слова.

Второе: я просто из виндусовой версии взял каталог units и поместил его туда же, где и бсдэшные лежат, т.о. у меня два каталога есть
/usr/local/lib/fpc/2.0.0/units/i386-freebsd
/usr/local/lib/fpc/2.0.0/units/i386-win32

Ну и взял конфиг из поста (кажется STAKANOV) и бездумно заменил им свой, поскольку еще не понимаю толком что к чему.

baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
  • Профиль
  • Сайт

Сообщение Uniser » 25.10.2005 19:53:03

Можно так

Код: Выделить всё
Program strlen;
Uses strings;
Const P : pchar = 'This i s a PCHAR string.';
begin
 Writeln ( 'Наша строка = ' ,P);
 Writeln ( 'Длина строки = ' ,strings.StrLen(P));
end.

Проблема в том, что имя программы совпадает с именем ф-и и компилятор отдаёт преимущество имени программы поэтому не ожидает скобку.

Uniser
новенький
 
Сообщения: 46
Зарегистрирован: 13.05.2005 23:13:57
Откуда: Украина, Полтава
  • Профиль
  • ICQ

Сообщение baklan » 25.10.2005 23:28:07

Ага…. , спасибо, учусь понемногу.

baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
  • Профиль
  • Сайт

Сообщение STAKANOV » 26.10.2005 10:43:52

baklan писал(а):И не только с этой функцией такая же проблема.
И сразу еще одна просьба,  при попытке сделать exe  для win32 выполняю команду fpc -Twin32 file.pas
Получаю
Error: Util -as not found, switching to external linking
Куда копать?

Ты забыл as и ld скачать и поставить.
Прочитай еще раз <a href=’http://freepascal.ru/forum/index.php?showtopic=250′ target=’_blank’>http://freepascal.ru/forum/index.php?showtopic=250</a>

Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград
  • Профиль
  • Сайт
  • ICQ

Сообщение baklan » 27.10.2005 17:37:34

Уфф , сделал, получилось!
Сейчас обдумываю один маленький проектик, чтобы не бесцельно тыкаться, а сделать полезную программку. Примерно вот что планирую: есть файл, имеющий вот такой формат
Операция;Тип;Инструмент;Время операции;Объем;Ср.цена;Цена закрытия;Прибыль;Комиссия;Остаток;
159408;OPEN;EURUSD;04.01.2005 2:00:01;700000;1.3535;0.0000;0.00;0.00;208518.28;
159409;OPEN;GBPUSD;04.01.2005 2:00:01;1100000;1.9277;0.0000;0.00;0.00;208518.28;
159525;CLOSE;GBPUSD;04.01.2005 2:02:25;-1100000;1.9277;1.9183;-10384.00;44.00;198134.28;
159669;CLOSE;EURUSD;04.01.2005 10:32:00;-700000;1.3535;1.3446;-6258.00;28.00;191876.28;
160703;OPEN;EURUSD;04.01.2005 20:59:16;700000;1.3301;0.0000;-28.00;28.00;191848.28;
………………………………………………
Загрузить его, взять только строки, отвечающие определенным условиям , а в этих строках взять только определенные поля и вывести в файл в формате HTML.
Начну ваять :)

baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
  • Профиль
  • Сайт


Сообщение baklan » 27.10.2005 18:06:58

Ну не знаю я таких слов еще (sdf)
Вообще на php это делал запросто, а сейчас не от нужды, а для обретения навыков. кстати сказать, опыт работы на php , пожалуй , больше мешает, чем помогает. Там все просто, пишешь программу, как сочинение, главное идею родить, а здесь…. error , undefined.. и т.д., пока с этим поборешься, идея уже исчезнет :)
Наверное это поначалу только. Кстати, немогу найти функцию, которая превращала бы строку в массив с заданным разделителем, ну например как php strtok или в перле split

baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
  • Профиль
  • Сайт

Сообщение Сергей Смирнов » 27.10.2005 18:14:08

sdf — это такой датасет. Установи одноименный пакет, брось на форму появившийся компонент, настрой в нём поля и разделитель и будет более-менее стандартный датасет для работы с файлами как раз примерно такого формата.

Если идеология работы с базами данных не вполне ясна — читай любые книги и статьи по Дельфи на эту тему. В FPC/Lazarus всё примерно также.

Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва
  • Профиль
  • Сайт

Сообщение baklan » 27.10.2005 20:46:10

Спасибо, но я не ставлю целью обработать этот файл, просто для практики в написании программ. SDF это немного не то.
Ну ладно, чтобы не раздувать тему, для других вопросов буду создавать другие темы.

baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
  • Профиль
  • Сайт

Сообщение STAKANOV » 27.10.2005 23:30:26

Мне для работы с такими тектовыми файлами (правда со сделками по акциям) хватает одной простой функции:

Код: Выделить всё
{
   ExtractWord - Извлечение слова из Строки

   Смотри Turbo professional source!
   Это пример вызова:
   FirstWord:=Extractword(1,Str,['.',' ']);

}

unit ExtrWord;
interface
type
   CharSet=set of char;

   function ExtractWord(N : Byte; S : string; WordDelims : CharSet) : string;

implementation

function ExtractWord(N : Byte; S : string; WordDelims : CharSet) : string;
{-Given a set of word delimiters, return the N'th word in S}
var
   I, Count, Len : Byte;
   SLen : Byte absolute S;
begin
   Count := 0;
   I := 1;
   Len := 0;
   ExtractWord[0] := #0;

   while (I <= SLen) and (Count <> N) do
   begin
 {skip over delimiters}
 while (I <= SLen) and (S[I] in WordDelims) do Inc(I);
 {if we're not beyond end of S, we're at the start of a word}
 if I <= SLen then Inc(Count);
 {find the end of the current word}
 while (I <= SLen) and not(S[I] in WordDelims) do
 begin
    {if this is the N'th word, add the I'th character to Tmp}
    if Count = N then
    begin
   Inc(Len);
   ExtractWord[0] := Char(Len);
   ExtractWord[Len] := S[I];
    end;
    Inc(I);
 end;
   end;
end;

end.

не помню где стащил ;)

Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград
  • Профиль
  • Сайт
  • ICQ


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Понравилась статья? Поделить с друзьями:
  • Syntax error expected but const real found
  • Syntax error expected an indented block
  • Syntax error excel vba
  • Syntax error eol while scanning string literal python
  • Syntax error eof while scanning triple quoted string literal