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

Тема в разделе "Delphi - FAQ", создана пользователем kaa, 21 сен 2007.

  1. kaa

    kaa Гость

    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
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: kaa
    а как Вы задекларировали VernutCatalog ?
     
  3. kaa

    kaa Гость

    <!--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]

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

    zubr Гость

    Код процедуры VernutCatalog в студию - скорее всего в ней ошибка.
     
  5. kaa

    kaa Гость

    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;
     
  6. zubr

    zubr Гость

    А глобальную переменную Spis ты инициализируешь? Я так понимаю это переменная типа TStringList.
     
  7. kaa

    kaa Гость

    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}
     
  8. Barmutik

    Barmutik Гость

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

    Честно говоря первый раз за свою карьеру вижу глобальный компонент TMemo :rolleyes:
     
  9. kaa

    kaa Гость

    пробывал заменить процедуру функцией которая бы возвращала Spis - непомогло
     
  10. zubr

    zubr Гость

    Для: kaa
    Создай Spis в DesignTime (то есть кинь на форму компонент TMemo и обзови его Spis) и будет тебе счастье.
     
  11. kaa

    kaa Гость

    Для: zubr

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

    а как создать програмно новый компанент?
     
  12. zubr

    zubr Гость

    Код (Text):
    Spis : =TMemo.Create(Form1);
    Spis.Parent:=Form1;
    Spis.Left:=100;
    Spis.Top:=100;
    .......................
     
  13. kaa

    kaa Гость

    Для: zubr
    Спасибо! <_<

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

    Silver Wind Гость

    Делфовая обертка над реестром - класс 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);

    Оно?
     
  15. kaa

    kaa Гость

    Для: Silver Wind
    Да спасибо!!


    Для: Silver Wind
    Да спасибо!!
     
Загрузка...

Поделиться этой страницей