функция разделения строк в delphi - PullRequest
0 голосов
/ 18 декабря 2009

На самом деле я был открыт вопрос ранее,

но не могу получить ответ, что я точно хочу, поэтому я хотел бы спросить еще раз спасибо Все

например, у меня есть текстовое имя файла 'test.txt', а внутри текстовое содержимое выглядит как

hello all
good day
happy is

и я хочу изменить следующий источник, чтобы выполнить итерацию по первому индексу 'hello all', который я имею в виду ..

если я нажму showmessage (сначала), то я хочу получить 'hello' внутри файла test.txt,

и если нажать showmessage (second), то хотите получить 'all' и продолжить,

если я нажму еще раз showmessage (сначала), то захочу получить 'good' и

нажмите еще раз showmessage (второй), затем хотите получить «день», что я хочу именно.

Заранее спасибо! и спасибо всем, кто мне уже помог!

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  list : TStringList;
  first, second, third: string;
begin
  list := TStringList.Create;
  try
    list.Delimiter := #32;
    list.LoadFromFile('test.txt');
    first := list[0];
    second := list[1];
    ShowMessage(first);
    ShowMessage(second);
  finally
    list.Free;
  end;
end;

Здравствуйте, вы можете изменить такие как следующие?

Я хочу использовать showmessage (первое) и showmessage (два), если вам так важно!

procedure TForm1.BitBtn1Click(Sender: TObject);

var
  theFileStuff : tstringList;
  oneLine      : tStringList;
  x,y          : integer;
begin
    theFileStuff      := tStringList.Create;
    oneLine           := tStringList.create;
    oneLine.Delimiter := #32;
    theFileStuff.LoadFromFile('test.txt');
    for x := 0 to theFileStuff.count-1 do
    begin
          oneLine.DelimitedText := theFileStuff[x];
          for y := 0 to oneLine.count-1
          do
          //ShowMessage(oneLine[y]);
          ShowMessage(first);
          ShowMessage(second);

    end;
    oneLine.Free;
    theFileStuff.Free;
end;

Ответы [ 2 ]

3 голосов
/ 18 декабря 2009

Попробуйте это

procedure TForm1.ShowFields(Sender: TObject);
var
  theFileStuff : tstringList;
  oneLine      : tStringList;
  x,y          : integer;
begin
    theFileStuff      := tStringList.Create;
    oneLine           := tStringList.create;
    oneLine.Delimiter := #32;
    theFileStuff.LoadFromFile('fileName');
    for x := 0 to theFileStuff.count-1 do
    begin
          oneLine.DelimitedText := theFileStuff[x];
          for y := 0 to oneLine.count-1
          do ShowMessage(oneLine[y]);
    end;
    oneLine.Free;
    theFileStuff.Free;
end;

Если вы знаете, что в строке только два элемента, вы можете заменить следующий код:

for y := 0 to oneLine.count-1
do ShowMessage(oneLine[y])

с

ShowMessage(oneLine[0]);    // First
ShowMessage(oneLine[1]);    // Second

Мой код был более универсальным для обработки любого количества элементов в строке

2 голосов
/ 18 декабря 2009

Свойство Delimiter имеет значение только при использовании свойства DelimitedText. Вам нужно будет использовать 2 отдельных объекта TStringList для того, что вы запрашиваете, например:

var
  list, values : TStringList;
  curListIdx, curValueIdx: Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
  curListIdx := -1;
  curValueIdx := -1;
  list := TStringList.Create; 
  values := TStringList.Create;
  values.Delimiter := #32;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  list.Free;
  values.Free;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  S: String;
begin 
  if curListIdx = -1 then
  begin
    list.LoadFromFile('test.txt');
    if list.Count = 0 then Exit;
    curListIdx := 0;
  end;

  if curValueIdx = -1 then
  begin
    if curListIdx = list.Count then
    begin
      curListIdx := -1;
      Exit;
    end;
    values.DelimitedText := list[curListIdx];
    Inc(curListIdx);
    if values.Count = 0 then Exit;
    curValueIdx := 0;
  end;

  S := values[curValueIdx]; 
  Inc(curValueIdx)
  if curValueIdx = values.Count then curValueIdx := -1;

  ShowMessage(S);
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...