|
0 / 0 / 0 Регистрация: 04.08.2018 Сообщений: 40 |
|
|
1 |
|
Не удалось скомпилировать использованный модуль13.01.2020, 17:09. Показов 2986. Ответов 8
Я не могу запустить свой код, ибо прога выдает ошибку: [Fatal Error] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’ Миниатюры
__________________
0 |
|
пофигист широкого профиля 4602 / 3062 / 850 Регистрация: 15.07.2013 Сообщений: 17,660 |
|
|
13.01.2020, 17:13 |
2 |
|
Значит ошибки в коде ‘Unit1.pas’.
0 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
13.01.2020, 17:28 |
3 |
|
вот фотка из папки, где находится прога То есть фотка, А НЕ КОД, должна помочь в постановке диагноза!
1 |
|
Модератор 3199 / 1813 / 664 Регистрация: 15.11.2015 Сообщений: 7,262 |
|
|
13.01.2020, 17:37 |
4 |
|
Не по теме: Правлю код по фотографии папки с проектом. Добавлено через 38 секунд
Как это можно пофиксить? Исправить ошибку в коде.
0 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
13.01.2020, 17:51 |
5 |
|
[Fatal Error] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’ сам по себе Fatal Error не информативен. Он всегда является следствием ошибки где-то в указанном модуле (как правило, компилятор указывает номер строки с ошибкой). Ищи строку с [Error] выше в отчёте компилятора
Eror in module Unit1: Declaration of class TForm 1 is missing or incorret вот это уже ближе к истине. Почитай внимательно оригинал этого сообщения и определи, в какой строке ошибка
0 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
13.01.2020, 17:58 |
6 |
|
Вот тебе небольшая демонстрация поведения компилятора Миниатюры
0 |
|
Нарушитель 8388 / 4391 / 1009 Регистрация: 12.03.2015 Сообщений: 20,566 |
|
|
13.01.2020, 18:11 |
7 |
|
Пробел удали, писарь.
0 |
|
Житель Земли 2994 / 2987 / 391 Регистрация: 26.07.2011 Сообщений: 11,456 Записей в блоге: 1 |
|
|
13.01.2020, 23:11 |
8 |
|
Verevkin, ты хоть цитируй. Я-то подозреваю, где лишний пробел, но, может быть, твоё замечание для ТС…
0 |
|
Нарушитель 8388 / 4391 / 1009 Регистрация: 12.03.2015 Сообщений: 20,566 |
|
|
13.01.2020, 23:28 |
9 |
|
ты хоть цитируй. Я-то подозреваю, где лишний пробел, но, может быть, твоё замечание для ТС… Узбагойзя.
0 |
|
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
13.01.2020, 23:28 |
|
9 |
В чём проблема?
Dimidrol
Пользователь
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
Вот код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text = 'admin' then
begin
Label3.Caption:='Вы авторизованны!';
end
else //Иначе
begin
Label3.Caption:='Логин не верный!';
end;
end;
Выдаёт ошибки
[Error] Unit1.pas(43): Declaration expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’
WetWta
Пользователь
Регистрация:
05.07.2013
Сообщения: 20
Рейтинг: 8
Регистрация:
05.07.2013
Сообщения: 20
Рейтинг: 8
senyaz
Пользователь
Регистрация:
04.11.2012
Сообщения: 994
Рейтинг: 749
Регистрация:
04.11.2012
Сообщения: 994
Рейтинг: 749
Lorax
Пользователь
Регистрация:
10.09.2012
Сообщения: 941
Рейтинг: 579
Регистрация:
10.09.2012
Сообщения: 941
Рейтинг: 579
странно, кстате еще после ned забыл точку с запятой
begin
if Edit1.Text = ‘admin’ then
begin
Label3.Caption:=’Вы авторизованны!’;
end;
stealth
Пользователь
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Делфи для слабых
Цитата:
begin
Label3.Caption:=’Вы авторизованны!’;
endНажмите, чтобы раскрыть…
Убрать begin-end’ы
Dimidrol
Пользователь
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
stealth сказал(а):↑
Нажмите, чтобы раскрыть…
Знаю си, учу делфи т.к. нет больших проектов, но нужна скорость разработки. Смысла нет знать другие языки..
IDDQD_
Пользователь
Регистрация:
20.03.2013
Сообщения: 847
Рейтинг: 349
Регистрация:
20.03.2013
Сообщения: 847
Рейтинг: 349
Dimidrol сказал(а):↑
Вот код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text = 'admin' then
begin
Label3.Caption:='Вы авторизованны!';
end
else //Иначе
begin
Label3.Caption:='Логин не верный!';
end;
end;
Выдаёт ошибки
[Error] Unit1.pas(43): Declaration expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’Нажмите, чтобы раскрыть…
Я знаю в чем трабла, там в коде ошибка.
stealth
Пользователь
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Dimidrol сказал(а):↑
Знаю си, учу делфи т.к. нет больших проектов, но нужна скорость разработки. Смысла нет знать другие языки..
Нажмите, чтобы раскрыть…
Знаю си, не учу делфи т.к. нафиг не сдался
Лучше подучить Java/C++/C#
Dimidrol
Пользователь
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
Lorax сказал(а):↑
странно, кстате еще после ned забыл точку с запятой
begin
if Edit1.Text = ‘admin’ then
begin
Label3.Caption:=’Вы авторизованны!’;
end;Нажмите, чтобы раскрыть…
Перед else не надо ставить её
![]()
P.S. Создал тему тут т.к. очень большой онлайн и авось кто-то поможетТ.к. на других форумах ждать ответа 2-3 дня не айс. На том же киберфоруме сколько народу, а как долго отвечают в разделе делфи..
stealth
Пользователь
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Dimidrol сказал(а):↑
Перед else не надо ставить её
![]()
P.S. Создал тему тут т.к. очень большой онлайн и авось кто-то поможетТ.к. на других форумах ждать ответа 2-3 дня не айс. На том же киберфоруме сколько народу, а как долго отвечают в разделе делфи..
Нажмите, чтобы раскрыть…
Да, точно : Забыл уже как в паскале это пишется
И, кстати, зачем везде begin-end если там только 1 строчка? можно ведь и без этого
Короче вот так попробуй:begin
if Edit1.Text = ‘admin’ then
Label3.Caption:=’Вы авторизованны!’;
else //Иначе
Label3.Caption:=’Логин не верный!’;
end;
Dimidrol
Пользователь
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
stealth сказал(а):↑
Знаю си, не учу делфи т.к. нафиг не сдался
Лучше подучить Java/C++/C#
Нажмите, чтобы раскрыть…
Зря ты так думаешь
Делфи намного легче чем тот же си++, мало чем делфи ему уступает, а в разработке софта типо брута, чекера и т.д. делфи равным нет ofc
IDDQD_ сказал(а):↑
Я знаю в чем трабла, там в коде ошибка.
Нажмите, чтобы раскрыть…
Не, не в коде.
stealth сказал(а):↑
Да, точно : Забыл уже как в паскале это пишется
Ну в конце то . точно надо поставить.
И, кстати, зачем везде begin-end если там только 1 строчка? можно ведь и без этогоНажмите, чтобы раскрыть…
Привык. Можешь дать вариант как без begin-end-ов ?)
stealth
Пользователь
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Dimidrol сказал(а):↑
Зря ты так думаешь
Делфи намного легче чем тот же си++, мало чем делфи ему уступает, а в разработке софта типо брута, чекера и т.д. делфи равным нет ofc
Не, не в коде.
Привык. Можешь дать вариант как без begin-end-ов ?)
Нажмите, чтобы раскрыть…
Редактнул предыдущее сообщение. Все что выше этого кода не понимаю, ибо не учил, так что если ошибка там, то жди ответа на киберфоруме.
зы Извиняюсь, не заметил, что это процедура (: Не надо в конце .
ззы Непривычно без { }![]()
Dimidrol
Пользователь
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
stealth сказал(а):↑
Редактнул предыдущее сообщение. Все что выше этого кода не понимаю, ибо не учил, так что если ошибка там, то жди ответа на киберфоруме.
зы Извиняюсь, не заметил, что это процедура (: Не надо в конце .Нажмите, чтобы раскрыть…
Тоже не правильно, создал много новых ошибок
![]()
Но ведь перед иначе должно стоять бегин?
Т.к. нельзя что-бы перед else стояло «;»
Тоесть нужно что бы было begin
Соответственно потом должно быть end. Ладно буду ждать мб кто-то ещё знает
stealth
Пользователь
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Регистрация:
29.02.2012
Сообщения: 1817
Рейтинг: 1095
Dimidrol сказал(а):↑
Тоже не правильно, создал много новых ошибок
![]()
Но ведь перед иначе должно стоять бегин?
Т.к. нельзя что-бы перед else стояло «;»
Тоесть нужно что бы было begin
Соответственно потом должно быть end. Ладно буду ждать мб кто-то ещё знаетНажмите, чтобы раскрыть…
Просто ; убрать и все. Но ошибка явно где-то сверху
begin
if Edit1.Text = ‘admin’ then
Label3.Caption:=’Вы авторизованны!’
else //Иначе
Label3.Caption:=’Логин не верный!’;
end;
Dimidrol
Пользователь
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
Регистрация:
10.06.2012
Сообщения: 75
Рейтинг: 22
stealth сказал(а):↑
Просто ; убрать и все. Но ошибка явно где-то сверху
begin
if Edit1.Text = ‘admin’ then
Label3.Caption:=’Вы авторизованны!’
else //Иначе
Label3.Caption:=’Логин не верный!’;
end;Нажмите, чтобы раскрыть…
Ошибка та же. Автор вот что посоветовал — Проверь соответствие begin end.
Тема закрыта
-
Заголовок
Ответов Просмотров
Последнее сообщение
-
fury72
09 Feb 2023 в 19:44Сообщений: 0
09 Feb 2023 в 19:44 -
Сообщений: 0
09 Feb 2023 в 19:40 -
Сообщений: 4
09 Feb 2023 в 19:37 -
Сообщений: 3
09 Feb 2023 в 19:36 -
Сообщений: 3
09 Feb 2023 в 19:30
|
|
|
|
Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
… (продолжение следует) …
Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки бан.
Мат в разделе — бан на три месяца…
Ошибки при работе с Indy 10.0.52
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
Использую Delphi 6.0 EE и Indy 10.0.52. При создании обработчика OnUDPRead получаю ошибки, раньше такого небыло. procedure IdUDPServer1UDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle); [Error] Unit1.pas(25): Undeclared identifier: ‘TBytes’ [Error] Unit1.pas(26): Undeclared identifier: ‘TIdSocketHandle’ [Error] Unit1.pas(76): ‘)’ expected but identifier ‘Size’ found [Error] Unit1.pas(77): Missing operator or semicolon [Error] Unit1.pas(77): ‘)’ expected but identifier ‘PeerIP’ found [Error] Unit1.pas(77): ‘END’ expected but ‘)’ found [Fatal Error] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’ Эти типы данных существуют, но непонятно почему Delphi их не принимает. У когонибуть было такое? и как лечить. Переустановку не предлагать — уже делал не помогло. Сообщение отредактировано: User32 — 14.08.07, 12:46 |
|
spleenJack |
|
|
Member Рейтинг (т): 8 |
Цитата [Error] Unit1.pas(25): Undeclared identifier: ‘TBytes’
Видимо нужно в uses подключить модули SysUtils и IdSocketHandle. |
|
User32 |
|
|
Цитата spleenJack @ 14.08.07, 12:32 Цитата [Error] Unit1.pas(25): Undeclared identifier: ‘TBytes’
Видимо нужно в uses подключить модули SysUtils и IdSocketHandle.
Уже пробовал, не помогает Добавлено 14.08.07, 13:04 В начале лечил явно прописав type TBytes = array[0..MaxSize] of Byte; Но это несовсем красиво и поэтому я просто добавил в uses uses IdGlobal, IdSocketHandle; и всё заработало вроде бы… Сообщение отредактировано: User32 — 14.08.07, 13:05 |
|
User32 |
|
|
Теперь ещё лучше, пишу: procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle); var StringFormatedStream: TStringStream; begin StringFormatedStream := TStringStream.Create(»); StringFormatedStream.CopyFrom(AData, AData.Size); Memo1.Lines.Add(ABinding.PeerIP+’ ‘+StringFormatedStream.DataString); StringFormatedStream.Free; end; и получаю: [Error] Unit1.pas(78): Incompatible types: ‘TStream’ and ‘TBytes’ [Error] Unit1.pas(78): ‘(‘ expected but ‘)’ found [Error] Unit1.pas(79): Missing operator or semicolon [Fatal Error] Server.dpr(5): Could not compile used unit ‘Unit1.pas’ А если так: procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle); var i: integer; Reply: string; begin // if OnAndOff = False then Exit else Reply := »; for i:=0 to 512 do begin if AData[i] = 0 then break; Reply := Reply + char(AData[i]); end; Memo1.Lines.Add(Reply); end;
то всё впорядке. Сообщение отредактировано: User32 — 14.08.07, 14:54 |
|
P.O.D |
|
|
User32 add to uses IdGlobal, IdSocketHandle |
|
WildBear |
|
|
Senior Member Рейтинг (т): 47 |
Ну да, так и должно быть… CopeFrom берет данные из TStream, не из TBytes. |
|
User32 |
|
|
Цитата P.O.D @ 14.08.07, 15:52 User32 add to uses IdGlobal, IdSocketHandle
Уже давно добавил, но бестолку. -Added 15.08.07, 06:48 Цитата WildBear @ 14.08.07, 18:00 Ну да, так и должно быть… CopeFrom берет данные из TStream, не из TBytes.
Да, вот только почемуто не работает Сообщение отредактировано: User32 — 15.08.07, 06:49 |
ViktorXP |
|
|
я канешно извеняюсь что в мешиваюсь в вашу беседу, но мне показалось странным что это никто не заметил. Цитата User32 @ 14.08.07, 14:51 StringFormatedStream.CopyFrom(AData, AData.Size);
но функции CopyFrom нужен поток а AData тут масив байт |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Общие вопросы
- Следующая тема
[ Script execution time: 0,0318 ] [ 16 queries used ] [ Generated: 9.02.23, 16:44 GMT ]
I have written 2 packages: MEComps_DXE5 and AMLComps_DXE5. The latter depends on the former. Both should be multi-platform: Win32, Win64, and (in the future) OSX.
When I open the first package MEComps_DXE5, I am able to compile it, build it and install it. I get some warnings, as this library contains code that must also compile on old D5, but the build succeeds and creates the dcu and dcp files where expected.
When I open the second package AMLComps_DXE5, I find this situation:
- If I do not declare the dependency on MEComps_DXE5, the package will compile and build correctly (no errors, dcu and dcp files are generated), but Delphi will warn me that it has implicitly imported units from MEComps_DXE5, and ask me to add the package to the dependency list (Requires)
- If the dependency is declared, then the compilation will fail with
"[dcc32 Fatal Error] MEComps_DXE5.dpk(52): F2063 Could not compile used unit 'MEClasses.pas'", where MEClasses is the first unit of the MEComps_DXE5 package.
I’ve been trying to solve this for a few days now, but to no avail. I’m working on two fronts:
- Why is Delphi even trying to compile the other package? I have just built and installed it, and have all dcus and the dcp.
- Why is the compilation failing?
As to the first question I have no clue whatsoever.
As to the second question, the documentation is useless in this case. It explains why not being able to compile a used unit is fatal, and states that the cause is determined by looking at the previous errors. But in this case, there are NO previous errors.
As MEComps_DXE5 actually compiles and builds on its own, I doubt this has anything to do with syntax or code. It would seem to be that the compiler is not able to find something it needs to compile those units.
The two packages reside each in their own directory. I put the MECompsWin32 dcu directory on the library path and on the browsing path. The IDE actually has no problems looking up the used units.
I also checked the dcc32 command line and it seems that all envolved directories are known to the compiler.
Other info I can add:
- Both packages have their own include file (in their source directory). I’m not sure if these are to be included in the package contains list or not, but I’ve tried both ways and nothing seemed to change.
- Both packages have a corresponding Delphi 5 package which includes some of the same units and code (different dpk though). These compile and build correctly. Delphi 5 dcu files are generated in the source directory. Can this create problems with the XE5 compiler?
- Here is the complete code for the MEComps_DXE5 package. I see a lot of compiler directives that Delphi inserted when it created the empty package. I didn’t touch those:
package MEComps_DXE5;
{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$IMPLICITBUILD ON}
requires
rtl,
fmx,
dbrtl,
xmlrtl;
contains
MEClasses in 'MEClasses.pas',
MEConsts in 'MEConsts.pas',
MEDataReader in 'MEDataReader.pas',
MEDateUtils in 'MEDateUtils.pas',
MEEncoding in 'MEEncoding.pas',
MEEncodingISO2022 in 'MEEncodingISO2022.pas',
MEFileUtils in 'MEFileUtils.pas',
MELists in 'MELists.pas',
MEMath in 'MEMath.pas',
MENumUtils in 'MENumUtils.pas',
MESQLUtils in 'MESQLUtils.pas',
MEStrUtils in 'MEStrUtils.pas',
MESysUtils in 'MESysUtils.pas',
METypes in 'METypes.pas',
MEURIUtils in 'MEURIUtils.pas',
MEXMLUtils in 'MEXMLUtils.pas';
end.




Лучше подучить Java/C++/C#





