Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизМассив строк. как ввести в него данные? Найти похожие ветки
← →
Pcrepair © (2012-07-17 10:46) [0]Добрый день. Есть код:
(* Функция удаления указанного слова из строки
(вместе со строкой) - предлоги и запрещенные к поиску слова*)
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.
Вопрос: как правильно ввести в массив строки?
← →
AV © (2012-07-17 10:49) [1]
> //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[конкретный грамм]
← →
Pcrepair © (2012-07-17 11:05) [2]AV, спасибо
SetLength(UseLessWords ,9);
UseLessWords[0]:= "без";
НО, теперь каждое слово можно только отдельно вводить в массив? там нет никакой общей записи?
← →
Медвежонок Пятачок © (2012-07-17 11:20) [3]есть общая.
но только если все элементы известны уже в момент компиляции.
← →
Pcrepair © (2012-07-17 11:28) [4]ну и ..... как оно выглядит?
вообще далее предполагается загрузить строки из файла в момент запуска программы. вот с текущими косяками разберусь
← →
Медвежонок Пятачок © (2012-07-17 11:30) [5]Как оно выглядит - нарисовано в хелпе.
В момент запуска это не поможет, так как по-русски написано, что все элементы должны быть известны на момент компиляции. Или иными словами - все элементы должны быть в исходнике зашиты.
← →
AV © (2012-07-17 11:35) [6]а-ля так можно сделать
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;
← →
icWasya © (2012-07-17 12:41) [7]Ну а если далее предполагается загрузить строки из файла ,
то почему бы не использовать TStringList и здесь?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.054 c