![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Вот тут вот кажется всё просто???
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
str1: TEdit;
Button1: TButton;
str2: TEdit;
str3: TEdit;
str4: TEdit;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure vgrids;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
begin
vGrids(0,'12~12~3~456~23);
end;
procedure vGrids(j: integer; str: string; a:TStringGrid);
var i, si :integer; st:string;
begin
for i:=1 to Length(str)+1 do
begin
if (str[i]='~') or (i=Length(str)+1) then
begin
if j=0 then a.ColCount:= a.ColCount+1;
a.Cells[si,0]:=st;
st:='';
si:=si+1;
end
else
st:=st+str[i];
end;
end;
end. |
|
#2
|
||||
|
||||
|
Цитата:
Во-вторых не нужно прибавлять единицу к длине строки. UPD. А, всё, я понял зачем прибавляется единица к длине строки - второе моё замечание прошу считать недействительным ![]() Последний раз редактировалось poli-smen, 27.09.2012 в 17:18. |
|
#3
|
|||
|
|||
|
su: integer;
а если не прибавить 1 то не получишь последнее значение |
|
#4
|
||||
|
||||
|
Цитата:
Код:
si := 0; Цитата:
![]() |
|
#5
|
||||
|
||||
|
Ага. Вот ещё здесь ошибка:
Цитата:
Код:
vGrids(0,'12~12~3~456~23', StringGrid1); |
|
#6
|
|||
|
|||
|
Поправил процедуру, как вы говорили)))
Смысл от этого не поменялся. implementation {$R *.dfm} Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
vGrids(1,'jy~~~~~34~',StringGrid1);
end;
procedure vGrids(j: integer; str: string; a:TStringGrid);
var i, si :integer; st:string;
begin
si:=0;
for i:=1 to Length(str)+1 do
begin
if (str[i]='~') or (i=Length(str)+1) then
begin
if j=0 then a.ColCount:= a.ColCount+1;
a.Cells[si,0]:=st;
st:='';
si:=si+1;
end
else
st:=st+str[i];
end;
end;
end.[Error] Unit1.pas(36): Too many actual parameters((((( |
|
#7
|
||||
|
||||
|
Если процедура не объявлена в интерфейсе, то подними ее выше того места где вызываешь.
|
|
#8
|
|||
|
|||
|
Я удалил объявление процедуры в шапке, и поставил её ниже процедуры обработки клика. Всё заработало спасибо. Но если процедуру не ставить выше, где её требуеться объявлять и каким образом???
|
|
#9
|
||||
|
||||
|
Перед implementation.
Если процедура такая: Код:
procedure A(b: string; c: MyType); var i: Integer; begin ... end; Код:
procedure A(b: string; c: MyType); Последний раз редактировалось ~TB~, 28.09.2012 в 09:15. |
|
#10
|
|||
|
|||
|
>to tiberianss
>Но если процедуру не ставить выше, где её требуеться объявлять и каким образом??? В Вашем первом посте строчки 28 и 39 должны быть одинаковыми. |
|
#11
|
||||
|
||||
|
Код:
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure vGrids(j: integer; str: string; a:TStringGrid);
var i, si :integer; st:string;
begin
si:=0;
for i:=1 to Length(str)+1 do
begin
if (str[i]='~') or (i=Length(str)+1) then
begin
if j=0 then a.ColCount:= a.ColCount+1;
a.Cells[si,0]:=st;
st:='';
si:=si+1;
end
else st:=st+str[i];
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
vGrids(0,'12~12~3~456~23',StringGrid1);
end;
end.![]() |