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 ниже код:
ps. уже сам нашел несколько ошибок, но все равно проблема осталась Добавлено через 8 минут
__________________
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» Ошибка: project1.lpr(1,1) Fatal: Syntax error, «BEGIN» expected but «end of file» found Ошибка: Fatal: Syntax error, «;» expected but «identifier Mas» found. procedure TForm1.Button1Click(Sender: TObject); Ошибка Fatal: Syntax error, «;» expected but «is» found 14 |
Джоуи 1073 / 635 / 240 Регистрация: 05.05.2015 Сообщений: 3,546 Записей в блоге: 2 |
|
07.02.2018, 05:48 |
2 |
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 |
||||
НЕ ЗНАЮ ЧТО ДЕЛАТЬ!
3. В секции uses подключить модуль Math
0 |
stkapler 0 / 0 / 0 Регистрация: 07.02.2018 Сообщений: 19 |
||||
07.02.2018, 12:22 [ТС] |
4 |
|||
сделал все как вы сказали 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» сами строки
у меня есть готовый ответ на это задание, даже 2. но все таки хочу найти решение самостоятельно, пусть даже при помощи форумчан)
0 |
Модератор 8255 / 5477 / 2249 Регистрация: 21.01.2014 Сообщений: 23,578 Записей в блоге: 3 |
|
07.02.2018, 12:35 |
5 |
stkapler, Вы Добавлено через 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 |
РешениеНе по теме:
А Вы этот обработчик создавали
нет, не создавал но в планах для красивого оформления программы это есть :scratch: stkapler, возьмите любую книжку по самым-самым азам создания программ в среде Delphi/Lazarus и обязательно прочтите ее… Ну или программирование бросайте прямо сейчас…
0 |
0 / 0 / 0 Регистрация: 07.02.2018 Сообщений: 19 |
|
07.02.2018, 19:11 [ТС] |
10 |
спасибо, теперь все ок!
0 |
Hretgir |
07.02.2018, 20:01
|
Не по теме:
зачем в 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
|
Не по теме: Да не спорьте. Не нужно знать язык программирования — значит, не нужно. Личное дело каждого. С другой стороны, те, кто всерьёз занимается программированием, как правило, знает несколько языков программирования, и выучить ещё один, как правило, никакая не проблема.
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
Unit1.pas(66,4) Fatal: Syntax error, «;» expected but «.» found {$mode objfpc}{$H+} interface uses Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 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 ???
-
PROGRAM Division;
-
VAR dDividend,dDivisor,dQuotient:Double;
-
BEGIN
-
Writeln(‘extra division’);
-
Writeln(‘ingresa el dividendo’);
-
Readln(dDividend);
-
Writeln(‘ingresa el divisor’);
-
Readln(dDivisor);
-
If (dDivisor = 0)
-
Then
-
Begin
-
Writeln(‘math error’);
-
Readln;
-
End
-
Else
-
Begin
-
dQuotient:= dDividend/dDivisor;
-
Writeln(‘el resultado de la division es: ‘,dQuotient:4:2);
-
Readln;
-
END;
-
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:
-
c:a/b;
Needs to be changed to this:
-
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:
-
end.
So, the entire code should look like this:
-
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; // <— CHANGED!!!
-
WriteLn(‘el resultado de la division es’, c:4:2);
-
ReadLn;
-
end;
-
end. // <— ADDED!!!
« Last Edit: June 19, 2020, 08:31:39 pm by Remy Lebeau »
Logged
@Remy Lebeau: almost … one is missing …
You don’t get the flower pot !
Logged
Windows 7 Pro (x64 Sp1) & Windows XP Pro (x86 Sp3).
@Remy Lebeau: almost … one is missing …
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 …
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
Logged
Turbo Pascal 3 CP/M — Amstrad PCW 8256 (512 KB !!!)
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
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 parameters. He хватает фактических параметров.
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