Пятница, 29 Мая 2020, 19:27

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Delphi:Вопрос-Ответ (Спросил - получил ответ)
Delphi:Вопрос-Ответ
AngevengelistДата: Пятница, 11 Февраля 2011, 23:15 | Сообщение # 21
постоянный участник
Сейчас нет на сайте
LexTailor, листинг(код программы) кидай сюда (под спойлер)
LexTailorДата: Воскресенье, 13 Февраля 2011, 14:46 | Сообщение # 22
был не раз
Сейчас нет на сайте
Ошибочка вышла. Этой ошибки уже нет) Просто я не дописал код.

Однако повылезало куча другого смешного)


Почему вылезает - не понимаю. Видимо, совсем туп.


http://mmorpgteam.3dn.ru

Сообщение отредактировал LexTailor - Воскресенье, 13 Февраля 2011, 15:04
AngevengelistДата: Воскресенье, 13 Февраля 2011, 15:30 | Сообщение # 23
постоянный участник
Сейчас нет на сайте
Quote (LexTailor)
if FindFirst(Path +*.mp3, fAnyFile, SearchRec) = 0 then
then

Первая ошибка, два then подряд
MoonKingДата: Воскресенье, 13 Февраля 2011, 15:39 | Сообщение # 24
Delphi'ст
Сейчас нет на сайте
LexTailor, эх, пронумеровать их бы...


Когда-нибудь я создам свой ЯП. С блэкджеком и шлю... хотя нет, этого не будет.
AngevengelistДата: Воскресенье, 13 Февраля 2011, 15:51 | Сообщение # 25
постоянный участник
Сейчас нет на сайте
Я не могу читать такой код, отредактируй его. Ну тут есть настолько элементарные ошибки, такое чувство, что ты изучаешь делфи второй день.
LexTailorДата: Воскресенье, 13 Февраля 2011, 16:04 | Сообщение # 26
был не раз
Сейчас нет на сайте
Quote (Angevengelist)
такое чувство, что ты изучаешь делфи второй день.

Интересно. Я ведь не говорил, сколько я его изучаю) Откуда вдруг возникло впечатление, будто бы я ЗНАЮ этот язык?
Я даже на учёбе ещё им не занимался. Паскаль экстерном, вот к Delphi подошёл. Правда, я его и дня не изучал... Так, часа три от силы...
Да, нуб, согласен. Но я быстро учусь. Просто нужна некоторая помощь. Код отредактирую, выложу.


http://mmorpgteam.3dn.ru

Сообщение отредактировал LexTailor - Воскресенье, 13 Февраля 2011, 16:05
AngevengelistДата: Воскресенье, 13 Февраля 2011, 17:07 | Сообщение # 27
постоянный участник
Сейчас нет на сайте
Quote (LexTailor)
Я ведь не говорил, сколько я его изучаю)

Нет выработанного определенного стиля, это выдает сразу.
LexTailorДата: Воскресенье, 13 Февраля 2011, 21:43 | Сообщение # 28
был не раз
Сейчас нет на сайте
Вроде более удобочитаемо. If not, разделю ещё сильнее и пронумерую каждую строку (правда, это должно только усилить мешанину)).

Вот чёрт, в спойлере нельзя пробелы-отступы делать -___-


http://mmorpgteam.3dn.ru

Сообщение отредактировал LexTailor - Воскресенье, 13 Февраля 2011, 21:50
AngevengelistДата: Понедельник, 14 Февраля 2011, 13:27 | Сообщение # 29
постоянный участник
Сейчас нет на сайте
LexTailor, заливай проект, со всеми pas файлами и кидай сюда, а то ты намешал все, что только можно.
MoonKingДата: Пятница, 18 Февраля 2011, 19:43 | Сообщение # 30
Delphi'ст
Сейчас нет на сайте
повторился =)


Когда-нибудь я создам свой ЯП. С блэкджеком и шлю... хотя нет, этого не будет.


Сообщение отредактировал MoonKing - Пятница, 18 Февраля 2011, 19:44
AngevengelistДата: Пятница, 18 Февраля 2011, 19:45 | Сообщение # 31
постоянный участник
Сейчас нет на сайте
Quote (MoonKing)
LexTailor, неправильное название переменной и т. д.

И кроме этого еще, ой ой ой сколько, поэтому проще проект залить куда нибудь, потому как его листинг я читать не могу.
LexTailorДата: Пятница, 18 Февраля 2011, 20:24 | Сообщение # 32
был не раз
Сейчас нет на сайте

Вот, архив с проектом.


http://mmorpgteam.3dn.ru

Сообщение отредактировал LexTailor - Пятница, 18 Февраля 2011, 20:24
TimKruzДата: Пятница, 18 Февраля 2011, 20:58 | Сообщение # 33
старожил
Сейчас нет на сайте
LexTailor, пользуйся тегом
Code
[code]

так будет удобней читать и копировать.
Чтобы исправить любую ошибку, выдаваемую компилятором Delphi, обычно нужно просто прочитать её. biggrin Ты английский-то знаешь, надеюсь? Даже если нет, то любая программа-переводчик тебе в помощь, хотя они фигово переводят. А если всё равно не понятна ошибка - поисковик используй. ВСЕ ошибки компиляторов известны и много раз обсуждены на самых разных форумах.
Ну ладно, в первый раз объясню подробно:
Code
[Warning] MP.pas(3): Unit 'FileCtrl' is specific to a platform //Предупреждение: модуль "FileCtrl" специфичен для платформы
[Error] MP.pas(35): Undeclared identifier: 'PlayList' //Не декларированная переменная, т.е. ты используешь ту переменную, которой просто не существует
[Error] MP.pas(40): This form of method call only allowed for class methods //"Эта форма метода может быть вызвано только для методов классов" - не знаю, что это
[Error] MP.pas(41): Undeclared identifier: 'Path' //опять не декларированная переменная...
[Error] MP.pas(41): Incompatible types: 'String' and 'Integer' //несовместимые типы переменных, используй StrToInt и IntToStr
[Error] MP.pas(42): Statement expected but 'THEN' found //утверждение пропущено, зато обнаружено "then", т.е. ты после If забыл написать условие
[Error] MP.pas(44): Method identifier expected //Пропущен идентификатор метода (метод - это процедура или функция класса)
[Error] MP.pas(46): Method identifier expected //
[Error] MP.pas(48): Method identifier expected //
[Error] MP.pas(50): Undeclared identifier: 'FormCreate' //не декларированный идентификатор - ты забыл точку между Form и Create
[Error] MP.pas(52): Method identifier expected //опять...
[Error] MP.pas(56): Undeclared identifier: 'Item' //нет идентификатора "Итем"
[Error] MP.pas(60): Undeclared identifier: 'Wave' //нет и-тора "Ваве"
[Error] MP.pas(62): Undeclared identifier: 'ListBox1Click' //нету ид-тора "ЛистФокс1Клик" - ты забыл точку поставить перед Click
[Error] MP.pas(62): ';' expected but '(' found //пропущен знак ;, зато найден (
[Error] MP.pas(69): Undeclared identifier: 'SpeedButton2Click' //необъявленный идентификатор "спидбуттон2клик" - ты забыл поставить точку перед Click
[Error] MP.pas(74): This form of method call only allowed for class methods //опять какая-то фигня, лень разбираться...
[Error] MP.pas(92): Undeclared identifier: 'TrackBar1Change' //...блин, ты опять забыл точку перед Change! Хотя это должно происходить автоматически...

Так, короче, как я вижу, ты несколько раз пропустил точку между названием объекта и названием обработчика события. Возможно, ты что-то пытался исправить и случайно удалил точки, но, возможно, ты в ручную писал названия методов. Так вот: чтобы среда Delphi автоматически создала шаблон для процедуры, можно дважды кликнуть справа от названия события в инспекторе объектов.

Фух, блин, скорей всего, у тебя Delphi 7, так вот мой совет: установи 2007, там среда "на лету" распознаёт ошибки, чуть не тот символ поставишь - сразу красным подчёркивает, мол, что-то не то пишешь, братец. Т.е. и исправить можно сразу, не доходя до компиляции. (2005 и 2006-ые версии очень глючные, не рекомендую, а вот в 2007 я ошибок не замечал. 2009-ая версия и следующие - новый формат, там сменили кодировку символов, и старый код не подойдёт...)

LexTailor, на фиг нам твой проект? Я тебе подробно описал ошибки, по большей части, они из-за неправильного синтаксиса. Вот когда проект успешно откомпилируется, но при этом будет делать что-то фантастическое, но совсем не то, что тебе нужно - тут, скорей всего, потребуется знать код проекта.

Тем более, мы не знаем, что должен делать проект, и чего он не делает.

netkiller, ставь Delphi 2007, должна пойти. И вообще, не обязательно же именно 2010 либо 7! Попробуй, если не лень, 2009.
А вообще-то, вот тут есть все версии Delphi: DelphiLab.

П-посмот-тр-рел я т-твой п-п-проЭкт, LexTailor... eek crazy killed
От одного взгляда на форму можно подохнуть... со смеху...
Короче, удали на фиг свой проЭкт, потом скачай любую книгу по Delphi и начинай читать с самой первой страницы. biggrin

В общем, я понял причину возникновения твоего проекта - ты попытался "методом тыка" использовать по назначению хоть какой-то стандартный компонент. С одной стороны, это хорошо, но только тогда, когда уже разбираешься в ООП и знаешь синтаксис языка. Т.е. эксперименты с компонентами и т.п. - это хорошо, но если ты не понимаешь элементарных вещей в программировании - такие эксперименты во вред, можешь закрепиться в ложном мнении, что это всё очень сложно.
Если ты изучал когда-то Pasсal - то изучить Delphi не составит большого труда, классы очень похожи на записи, использование компонентов вообще очень легко... Но с учётом того, какие ошибки в твоём какбЭ проЫЭкте, у меня создалось впечатление, что ты Pascal либо ни когда не видел, либо давно забыл...




Сообщение отредактировал TimKruz - Пятница, 18 Февраля 2011, 21:08
AngevengelistДата: Пятница, 18 Февраля 2011, 21:36 | Сообщение # 34
постоянный участник
Сейчас нет на сайте
Практически все ошибки исправил, завтра залью работоспособную версию и опишу причины ошибок, и причины их возникновения.
FilinsheinДата: Воскресенье, 20 Февраля 2011, 23:33 | Сообщение # 35
почетный гость
Сейчас нет на сайте
Кто нибудь знает как реализовать ссылку в RichEdit?

AngevengelistДата: Понедельник, 21 Февраля 2011, 00:07 | Сообщение # 36
постоянный участник
Сейчас нет на сайте
Filinshein, http://delphi.about.com/od/vclusing/l/aa111803a.htm
FilinsheinДата: Понедельник, 21 Февраля 2011, 00:09 | Сообщение # 37
почетный гость
Сейчас нет на сайте
Angevengelist, Спасибо большое, а ну русском языке нет ничего? smile

AngevengelistДата: Понедельник, 21 Февраля 2011, 00:33 | Сообщение # 38
постоянный участник
Сейчас нет на сайте
Filinshein, добавь в public
Code
procedure WndProc(var Message: TMessage); override;

потом кинь на форму сам RichEdit

в OnCreate формы напиши

Code
procedure TForm1.FormCreate(Sender: TObject);
var
mask: Word;
begin
mask := SendMessage(RichEdit1.Handle, EM_GETEVENTMASK, 0, 0);
SendMessage(RichEdit1.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
SendMessage(RichEdit1.Handle, EM_AUTOURLDETECT, Integer(True), 0);
//Some text in RichEdit
RichEdit1.Text := 'Angevengelist'#13#10 +
    'www.gcup.ru. лучший сайт о разработке игр.';
end;

И напиши процедуру в пустом месте кода после

Code
implementation

{$R *.dfm}

Вот этот код

Code
procedure TForm1.WndProc(var Message: TMessage);
var
p: TENLink;
strURL: string;
begin
if (Message.Msg = WM_NOTIFY) then
begin
    if (PNMHDR(Message.lParam).code = EN_LINK) then
    begin
      p := TENLink(Pointer(TWMNotify(Message).NMHdr)^);
      if (p.Msg = WM_LBUTTONDOWN) then
      begin
        SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg)));
        strURL := RichEdit1.SelText;
        ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL);
      end
    end
end;
inherited;
end;

И ссылки будут активные

Добавлено (21.02.2011, 00:33)
---------------------------------------------
Да и в uses добавь

Code
Richedit, ShellApi
, теперь все должно работать
FilinsheinДата: Понедельник, 21 Февраля 2011, 00:40 | Сообщение # 39
почетный гость
Сейчас нет на сайте
Благодарствую!

AngevengelistДата: Понедельник, 21 Февраля 2011, 00:49 | Сообщение # 40
постоянный участник
Сейчас нет на сайте
Quote (Filinshein)
Благодарствую!

Всегда рад помочь
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Delphi:Вопрос-Ответ (Спросил - получил ответ)
Поиск:

Все права сохранены. GcUp.ru © 2008-2020 Рейтинг