Вызов процедуры из процедуры

  • Автор темы kaa
  • Дата начала
K
#1
procedure VernutCatalog(var NewDisk1 : String);

begin

end;


procedure TForm1.SearchClick(Sender: TObject);
var
S : string;
begin
S := 'D:\Soft\';
VernutCatalog(S); // Здесь ругаеться
end;
end.

Project.exe raised exception class EAccessViolation
 
K
#3
<!--QuoteBegin-Morpheus+21:09:2007, 14:52 -->
<span class="vbquote">(Morpheus @ 21:09:2007, 14:52 )</span><!--QuoteEBegin-->а как Вы задекларировали VernutCatalog ?
[snapback]79123" rel="nofollow" target="_blank[/snapback]​
[/quote]

для тупых новичков объесните пожалуйста
 
Z

zubr

#4
Код процедуры VernutCatalog в студию - скорее всего в ней ошибка.
 
K
#5
procedure VernutCatalog(NewDisk1: String);
var
PrF : Integer;
ResultSearch : TSearchRec;
NameCatalog : string;
begin
Spis.Clear;
NewDisk1 := NewDisk1+'*.*';
PrF := FindFirst(NewDisk1,faAnyFile,ResultSearch);//находим файл
if PrF=0 then
repeat
NameCatalog := ResultSearch.Name+'\';

if DirectoryExists(NameCatalog) then
begin
Spis.Lines.Add(NameCatalog);
VernutCatalog(NameCatalog);
end;

until (FindNext(ResultSearch)<>0);
FindClose(ResultSearch);

end;
 
Z

zubr

#6
А глобальную переменную Spis ты инициализируешь? Я так понимаю это переменная типа TStringList.
 
K
#7
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Search: TButton;
Resultat: TMemo;
Disks: TComboBox;
Label1: TLabel;
procedure FormShow(Sender: TObject);
procedure SearchClick(Sender: TObject);
private
{ Private declarations }
procedure VernutCatalog(NewDisk1:String);
public
{ Public declarations }
end;
var
Form1: TForm1;
Spis : TMemo;
implementation
uses Unit2;
{$R *.dfm}
 
B

Barmutik

#8
А как насчёт создать Spis : TMemo ? Или это происходит за кадром?

Честно говоря первый раз за свою карьеру вижу глобальный компонент TMemo :rolleyes:
 
K
#9
пробывал заменить процедуру функцией которая бы возвращала Spis - непомогло
 
Z
#10
Для: kaa
Создай Spis в DesignTime (то есть кинь на форму компонент TMemo и обзови его Spis) и будет тебе счастье.
 
K
#11
Для: zubr

Дело втом что на форме он ненужен, и пользователю его видеть незачем(если только сделатьневидимым )

а как создать програмно новый компанент?
 
Z
#12
Код:
Spis : =TMemo.Create(Form1);
Spis.Parent:=Form1;
Spis.Left:=100;
Spis.Top:=100;
.......................
 
K
#13
Для: zubr
Спасибо! <_<

Еще вопрос
Есть ветка реестра с несколькими параметрами как узнать количество параметров и соответственно перебрать их в цикле
 
S

Silver Wind

#14
Делфовая обертка над реестром - класс TRegistry, у него есть метод, для текущего ключа:

function GetKeyInfo(var Value: TRegKeyInfo): Boolean;

где

TRegKeyInfo = record
NumSubKeys: Integer;
MaxSubKeyLen: Integer;
NumValues: Integer;
MaxValueLen: Integer;
MaxDataLen: Integer;
FileTime: TFileTime;
end;

или вот еще в том же классе
procedure GetKeyNames(Strings: TStrings);
procedure GetValueNames(Strings: TStrings);

Оно?