Полная версия этой страницы:
Вызов процедуры из процедуры
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
Morpheus
21:09:2007, 12:52
Для: kaa
а как Вы задекларировали VernutCatalog ?
Цитата(Morpheus @ 21:09:2007, 14:52 )
а как Вы задекларировали VernutCatalog ?
для тупых новичков объесните пожалуйста
Код процедуры VernutCatalog в студию - скорее всего в ней ошибка.
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;
А глобальную переменную Spis ты инициализируешь? Я так понимаю это переменная типа TStringList.
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}
Barmutik
23:09:2007, 09:49
А как насчёт создать
Spis : TMemo ? Или это происходит за кадром?
Честно говоря первый раз за свою карьеру вижу глобальный компонент TMemo
пробывал заменить процедуру функцией которая бы возвращала Spis - непомогло
Для: kaa
Создай Spis в DesignTime (то есть кинь на форму компонент TMemo и обзови его Spis) и будет тебе счастье.
Для: zubr
Дело втом что на форме он ненужен, и пользователю его видеть незачем(если только сделатьневидимым )
а как создать програмно новый компанент?
Spis : =TMemo.Create(Form1);
Spis.Parent:=Form1;
Spis.Left:=100;
Spis.Top:=100;
.......................
Для:
zubrСпасибо!

Еще вопрос
Есть ветка реестра с несколькими параметрами как узнать количество параметров и соответственно перебрать их в цикле
Silver Wind
1:10:2007, 14:06
Делфовая обертка над реестром - класс 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);
Оно?
Для: Silver Wind
Да спасибо!!
Для: Silver Wind
Да спасибо!!
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.