Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массив строк. как ввести в него данные?


Pcrepair ©   (2012-07-17 10:46:00) 

Добрый день. Есть код:

(* Функция удаления указанного слова из строки
(вместе со строкой) - предлоги и запрещенные к поиску слова*)
function TForm1.DelUselessWords(const S:string):string;
var T1,T2:TStringList;  i,f:integer;   W,UseLess:string;
UseLessWords:array of string; (*объявляем динамический массив строк*)
begin
 //UseLessWords - вот тут надо ввести строки в массив
 //UseLessWords[0]:= 'без'; (*Exception class $C0000005 with message
 //'access violation at 0x00406f66: write of address 0x00000000'*)
 //UseLessWords:=['без','перед']; (*E2010 Incompatible types: 'Integer' and 'string'*)
 T1:=TStringList.Create;
 T2:=TStringList.Create;
 T1.Text:=S; (*ввод строк из МЕМО1*)
 for f := 0 to Length(UseLessWords)-1 do (*Цикл подстановки слова для проверки
 из массива строк*)
  begin
  UseLess:=UseLessWords[f]; (*вводим из массива очередную строку*)
  ShowMessage(UseLess);
 (*============================================*)
 (*цикл проверки строки на наличие ненужного, если ненужного нет, тогда
 добавить строку в выход*)
     for i := 0 to T1.Count-1 do
     begin
       W:=T1.Strings[i]; (*ввод строк для проверки в цикле*)
       if (AnsiPos(UseLess,W)=0)(*затычка для заданного слова*)
       then
       T2.Add(W);  (*накопление валидных строк*)
     end;
 (*============================================*)
  end;
 DelUselessWords:=T2.Text;  (*вывод результата в МЕМО2*)
 T1.Free;
 T2.Free;
end;
(*=======================================================*)
end.


Вопрос: как правильно ввести в массив строки?


icWasya   (2012-07-17 12:41:00) [1]

Ну а если   далее предполагается загрузить строки из файла,
то почему бы не использовать TStringList и здесь?


AV   (2012-07-17 11:35:00) [2]

а-ля так можно сделать

 public      { Public declarations }
   StrA: array of string;
   procedure AddToStrA(A: array of string);
 end;

var
 Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.AddToStrA(A: array of string);
var
 i, L: Integer;
 s: string;
begin
 L := Length(StrA);
 SetLength(StrA, L + Length(A));
 for i := 0 to Length(A) - 1 do
   StrA[L+i] := A[i];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 AddToStrA(['qwer','asd']);
 for i := 0 to Length(StrA) - 1 do
   ShowMessage( StrA[i] );

 AddToStrA(['qwer2','asd2']);
 for i := 0 to Length(StrA) - 1 do
   ShowMessage( StrA[i] );
end;


Медвежонок Пятачок   (2012-07-17 11:30:00) [3]

Как оно выглядит - нарисовано в хелпе.
В момент запуска это не поможет, так как по-русски написано, что все элементы должны быть известны на момент компиляции. Или иными словами - все элементы должны быть в исходнике зашиты.


Pcrepair   (2012-07-17 11:28:00) [4]

ну и ..... как оно выглядит?
вообще далее предполагается загрузить строки из файла в момент запуска программы. вот с текущими косяками разберусь


Медвежонок Пятачок   (2012-07-17 11:20:00) [5]

есть общая.
но только если все элементы известны уже в момент компиляции.


Pcrepair   (2012-07-17 11:05:00) [6]

AV, спасибо

SetLength(UseLessWords ,9);
 UseLessWords[0]:= 'без';

НО, теперь каждое слово можно только отдельно вводить в массив? там нет никакой общей записи?


AV   (2012-07-17 10:49:00) [7]


>  //UseLessWords - вот тут надо ввести строки в массив
>  //UseLessWords[0]:= 'без'; (*Exception class $C0000005
> with message
>  //'access violation at 0x00406f66: write of address 0x00000000'*)
>  //UseLessWords:=['без','перед']; (*E2010 Incompatible types:
>  'Integer' and 'string'*)
>

SetLength(UseLessWords , скока_вешать_в граммах_строк)
а потом уже
UseLessWords[конкретный грамм]


Наверх

Титульная страница Поиск, карта сайта Написать письмо