PDA

Показать полную графическую версию : If Then Else


Dr.Dark
30-01-2009, 00:32
Блин извините конечно за тупой вопрос, но я не могу написать правильно
If IsValue=False And Buffer<>'=' Then KeyArr[ArrIdx]:=KeyArr[ArrIdx]+Buffer;
мне в ответ
[Pascal Error] Unit1.pas(52): E2010 Incompatible types: 'string' and 'Boolean'
Пачему чёт не врублю.
PS В Delphi только начинаю

Delirium
30-01-2009, 02:11
я делфи конечно тоже не знаю, но скорее всего надо написать
If IsValue:=False And Buffer<>'=' Then KeyArr[ArrIdx]:=KeyArr[ArrIdx]+Buffer;

ShaddyR
30-01-2009, 04:05
If IsValue:=False And Buffer<>'=' Then KeyArr[ArrIdx]:=KeyArr[ArrIdx]+Buffer; »
точно - не знаешь, как и паскаля ;)
>
Dr.Dark, ты бы того... типы вышеозвученных переменных привел, что ли..

Dr.Dark
30-01-2009, 08:54
Блин А ларчиг просто открывался
If (IsValue=False) And (Buffer<>'=') Then KeyArr[ArrIdx]:=KeyArr[ArrIdx]+Buffer;
Dr.Dark, ты бы того... типы вышеозвученных переменных привел, что ли.. »
Прошу прощения за не корректный вопрос IsValue:Boolean, Buffer:Char. А то что после Then синтаксически верно.
P.S. Можно задать исчо несколько маленьких вопросов тут, а то мне много тем открывать
P.P.S. А тему переименуем в "Вопросы чайников о Delphi" :)

pva
30-01-2009, 14:10
ещё исправь: If IsValue And (Buffer<>'=') Then...
не будь индиским прогером..

ShaddyR
30-01-2009, 15:44
ещё исправь »
стиль программирования - это хорошо. А внимательность - еще лучше: ты изменил логику условия. То бишь, тогда уже "if (not isvalue) and"..

Можно задать исчо несколько маленьких вопросов тут, а то мне много тем открывать »
мож, лучше соответствующую мурзилку почитать?

Dr.Dark
31-01-2009, 20:10
ShaddyR,
мож, лучше соответствующую мурзилку почитать? »
Ужо читкаю
ещё исправь: If IsValue And (Buffer<>'=') Then... »
Во!! Эт полезное замечание!!
не будь индиским прогером.. »
?? А почему именно индийским??
Ещё не могу понять как записать в массив все секции из ини файла
Пишу:

var
Components:Array of String [10];
...
CFGFile:=TIniFile.Create('autorun.cfg');
CFGFile.ReadSections(Components);


Ошибка:
[Pascal Error] Code.pas(52): E1012 Constant expression violates subrange bounds
Если кому не лень помогите...

vserd
01-02-2009, 02:04
b]Dr.Dark[/b],

Components: TStringlist;

Components:= TStringlist.create;
try
CFGFile:=TIniFile.Create('autorun.cfg');
try
CFGFile.ReadSections(Components);
finally
CFGFile.Free;
end;
finally
Components.free;
end;

Dr.Dark
02-02-2009, 21:49
Есть динамически генерируемая кнопка, как установить процедуру по щелчку?

Alan85
02-02-2009, 22:00
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure OnClik(Sender: TObject);
end;

var
Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var b:tbutton;
begin
b:=TButton.Create(form1);
b.Parent:=form1;
b.OnClick:=OnClik;
b.Visible:=true;
end;

procedure TForm1.OnClik(Sender: TObject);
begin
ShowMessage('hello');
end;

end.
небольшой пример

Dr.Dark
02-02-2009, 22:28
b.OnClick:=OnClik; »
Так и делал
Button.OnClick:=ShellEx(StrBuf,StrBuf1);
но выдаёт
Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer or untyped parameter'

Alan85
02-02-2009, 22:34
procedure OnClik(Sender: TObject); »
b.OnClick:=OnClik; »
Процедура тут типизирована, т.е. должно обязательно иметь формат

procedure MyName (Sender : TObject);

Должны совпадать количество параметров и их типы . Здесь это параметр типа TObject;

Dr.Dark
03-02-2009, 01:54
Решил проблему использованием глобальных переменных.
Но всётаки как сделать чтоб по щелчку на кнопке выполнялась процедура с переданными ей параметрами?
Даамс прогер из меня как из Майкла Джексона -Негр

Alan85
03-02-2009, 18:13
Решил проблему использованием глобальных переменных. »
а не красивее сделать вместо глоб. переменных поля класса Tform и потом в процедуре OnClik вызвать тот метод который тебе надо.




© OSzone.net 2001-2012