Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Как самостоятельно разобраться с Delphi
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Uli9 Uli9 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2008
По умолчанию Как самостоятельно разобраться с Delphi - 20.11.2008, 23:40

Ребят,такая проблема.Создаю проект в Delphi.Написала один модуль.Потом создала новый модуль.Написала его.Начинаю компилировать.Он не компилирует.Не находит файл dfm.Вообщем видимо модуль Unit2 не подключен.Как мне его подключить?объясните пожалуйста.
Ответить с цитированием
  (#2 (permalink)) Старый
X-Cite_Forever X-Cite_Forever вне форума
Member
 
Сообщений: 536
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2006
По умолчанию 21.11.2008, 18:30

Во первых, что за модуль вы написали.. Это вы описали работу с формой в нем?
А второй модуль это новая форма или просто модуль?
*.dfm это файл начальных данных формы
Ответить с цитированием
  (#3 (permalink)) Старый
Uli9 Uli9 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2008
По умолчанию 21.11.2008, 21:02

В начале создали форму и Unit1.В нем писана форма.ЭТо все работает. Потом понадобился модуль Unit 2. Для другой реализации функции.Вот.И его не видит.Есть только Unit1.pas Unit2.pas Unit1dfm
Ответить с цитированием
  (#4 (permalink)) Старый
†Strannik† †Strannik† вне форума
Странник всея Руси!
 
Аватар для †Strannik†
 
Сообщений: 99
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Регистрация: 09.11.2007
По умолчанию 21.11.2008, 23:50

По вашему объяснению что-то не догнал%)
Но может,если не видит, вы его тупо забыли в uses подключить?
Ответить с цитированием
  (#5 (permalink)) Старый
Uli9 Uli9 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2008
По умолчанию 22.11.2008, 00:01

uses подключен и в 1 и во 2 модуле..и ничего ..все равно
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,248
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 22.11.2008, 03:34

Если модуль не является формой, то никаких dfm быть не должно.

А можно подробнее - что значит "не видит" ?

А еще лучше - посмотреть бы на этот проект
Ответить с цитированием
  (#7 (permalink)) Старый
Uli9 Uli9 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2008
По умолчанию 23.11.2008, 13:56

Хорошо бы если бы посмотрел кто-нибудь и помог.Но как здесь прикрепить его?
Ответить с цитированием
  (#8 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,248
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 23.11.2008, 16:55

Ну, детально точно сказать не могу, так как главной формы в выложенном файле нет, она осталась в другой папке:
Код:
  Unit1 in '..\Курсовая 13 ноября\Unit1.pas' {Form1},
Но главное:
юнит имеет раздел interface, который описывает переменные и процедуры, доступные из других модулей.
Мало того, что нужные вам процедуры определены в разделе implementation, надо добавить их описания в раздел interface.
Ответить с цитированием
  (#9 (permalink)) Старый
†Strannik† †Strannik† вне форума
Странник всея Руси!
 
Аватар для †Strannik†
 
Сообщений: 99
Сказал(а) спасибо: 1
Поблагодарили 2 раз(а) в 2 сообщениях
Регистрация: 09.11.2007
Arrow 23.11.2008, 20:23

Может я чего-то не догоняю, но у вас три модуля Unit1-3, каждый (судя по описанию имеет свою форму), но почему-то в модулях, причем во всех форма Form1 (с разными компонентами)! О_О

Код:
первый
type
  TForm1 = class(TForm)//Форм1
    memRes: TMemo;
    sgWeights: TStringGrid;
    lbTowns: TListBox;
    editTownName: TEdit;
    btnAddTown: TButton;
    btnDeleteTown: TButton;
    btnClear: TButton;
    btnGo: TButton;
--------------------------------------

второй
  TForm1 = class(TForm)//Снова форм один
    memRes2: TMemo;
    Button1: TButton;
    Label5: TLabel;
    Label6: TLabel;

     private
    { Private declarations }

  //    procedure Step(s,f,p:integer);
     { procedure ShowResults2; //нужна для мемо чтобы показывать результаты перемещения     // СПРОРОСИТЬ НУЖНА ЛИ ИНИЦИАЛИЗАЦИЯ РАСЧЕТА// }

public
{ Public declarations }

end;

 implementation


//тут вообще хрень какае-то.............. (если у него нет формы, то зачем в uses все это?) 

unit Unit3;
interface
    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Buttons;
 const
   MAXPATH = 1000; // максимальная длина пути м/д двумя вершинами
  MAXTOWNCOUNT = 100; // максимальное количество вершин
  type

TArray = array[0 .. 2 * MAXTOWNCOUNT - 1] of integer;



         function dijkstra(a, b, forbidden : integer; var path : TArray; var cpath : integer) : word;
         function solve(a, b, c : integer; var path : TArray; var cpath : integer) : word;

    private
    { Private declarations }
      Weights: array [0..MAXTOWNCOUNT-1, 0..MAXTOWNCOUNT-1] of integer;
    // количество городов

    towncount: integer;
    // массивы для расчета
    // город (вершина графа) уже обсчитан
    Ready: array [0..MAXTOWNCOUNT-1] of boolean;
    // текущий кратчайший пусть до этого города из первого
     Paths: array [0..MAXTOWNCOUNT-1] of word;
    // предпоследний узел пути из первого города до этого

     Nodes: array [0..MAXTOWNCOUNT-1] of byte;
    // индекс первого города

    first: integer;
    // очистка интерфейсной таблицы весов



  implementation

Извиняюсь, но это вообще работало?
P.S.
Так же не увидел строчки
var
Form: TForm;
P.S.S
ИМХО конечно, но по моему проще будет пересоздать проект, создавая все юниты сразу, а процессы обработки взять из старого проекта! Только не копировать весь модуль целиком и именно только то что писали вы!!!
(что-то мне подсказывает что если решение будет то будет очень простое, сродни выключенной кнопки на обратной стороне системника(без обид!!!) )


я могу ошибаться или заблуждаться, всё сказанное мной ИМХО, но оно может меняться...
Ответить с цитированием
  (#10 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,248
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 23.11.2008, 21:27

Все не так страшно.

Юнит Unit3 явно переделан из формы, но не совсем удачно.
Юнит Unit2 вообще не переделан из формы.
Действительно, при недостатке опыта лучше было создать все заново.

Но сейчас надо внести всего три изменения:

1) В файле Unit2.pas убрать почти весь кусок
Код:
type
  TForm1 = class(TForm)
    memRes2: TMemo;
    Button1: TButton;
    Label5: TLabel;
    Label6: TLabel;

     private
    { Private declarations }

  //    procedure Step(s,f,p:integer);
     { procedure ShowResults2; //нужна для мемо чтобы показывать результаты перемещения     // СПРОРОСИТЬ НУЖНА ЛИ ИНИЦИАЛИЗАЦИЯ РАСЧЕТА// }

public
{ Public declarations }

end;

 implementation

   {$R *.dfm}
оставив из него 2 строчки:
Код:
      procedure Step(s,f,p:integer);

 implementation
2) В файле Unit3.pas заменить строчки
Код:
    private
    { Private declarations }
на строчки
Код:
implementation
var
2) В том же файле Unit3.pas убрать строчки
Код:
  implementation
    {$R *.dfm}

Правда, после этого остается несколько ошибок, но куда менее страшного свойства.

Забегая вперед, скажу, что они возникают из-за того, что переменные типа byte и word - беззнаковые, они не могут принимать значение -1.
(Можно использовать в качестве флажка значения MaxByte и MaxWord)
Ответить с цитированием
  (#11 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,248
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 23.11.2008, 21:55

aka.Strannik
Диагноз правильный - все изначально делалось как формы.
Но оба юнита не так сложно зачистить, чтобы от форм ничего не осталось.

Что касается лишних юнитов в Uses - оно все равно никому не мешает.
Ответить с цитированием
  (#12 (permalink)) Старый
Uli9 Uli9 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2008
По умолчанию 24.11.2008, 15:02

Ребят, я хочу создать новый проект. Раз Вы все говорите что в моем старом бред.Как мне изначально, сразу создать 1 форму и 3 модуля? Чтобы не было моих глупых вопросов Вам.Спасибо.Извини те что беспокою.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,248
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 24.11.2008, 16:49

Цитата:
Раз Вы все говорите что в моем старом бред.
Я не говорил про бред. Я понимаю, что там сделано и как оно получилось. Я вижу как его исправить.

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

Цитата:
Ребят, я хочу создать новый проект.
Конечно, определенный здравый смысл в этом есть. Собственно, люди так и учатся: повторяют одни и те же действия, пока они не начнут сразу получаться как надо. Но нужно учитывать, что в новом проекте можно налепить новых ошибок.

Я повторяю, чтобы довести этот проект до ума, надо изменить всего в трех местах. Там что-то непонятно?

Цитата:
Как мне изначально, сразу создать 1 форму и 3 модуля?
Сразу проект создается с одной формой (главной). Потом в него нужно добавить нужное количество модулей.
Модуль может быть формой, а может не быть. Если в модуле только процедуры и нет никакой визуальности, то его не нужно делать формой.
При создании сразу указывается, что создается - New Form или New Unit
Ответить с цитированием
  (#14 (permalink)) Старый
Uli9 Uli9 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.11.2008
По умолчанию 24.11.2008, 19:35

Я изменила. Но это не помогло на мой взгляд. Спасибо.
Ответить с цитированием
  (#15 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,248
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 24.11.2008, 20:44

Странно. У меня проект запустился. А можно увидеть, что получилось?
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста разобраться(Delphi) Нуб Pascal 0 28.03.2011 22:12
Как самостоятельно разобраться с DataGridView Creeepy Visual C++ 4 05.07.2009 18:07
MySQL++ как установить самостоятельно -:Crusher:- Visual C++ 0 12.03.2006 03:42
Как самостоятельно установить MSDN Paha Visual C++ 2 07.11.2005 15:19
Создать архиватор самостоятельно Bizon Delphi 6 13.08.2005 22:38
Как самостоятельно разобраться с сокетами в VC++ Neitrino Visual C++ 9 01.08.2005 00:06
Как самостоятельно разобраться с RaveReports Stich Delphi 0 02.06.2005 16:52
Как самостоятельно разобраться с SetFilePtr и WriteFile DmitriyG Visual C++ 4 20.09.2004 20:26
Как самостоятельно разобраться с CStatic Anonymous Visual C++ 1 19.12.2003 14:38
Создание Help самостоятельно Anonymous Visual C++ 11 17.12.2003 14:58
Можно ли самостоятельно разобраться с ini-файлом Dimas Sinyak C++ Builder 7 22.09.2002 19:22



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов