• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Delphi 7: строки, обратный порядок слов в строке

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Это всё я тут флудю :oops:
В данный момент пытаюсь вывести слова в строке в обратном порядке. Т.е.: папа мама брат->брат мама папа
Вот что у меня пока что получается:
Код:
unit Laba4_2Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Button1: TButton;
procedure Edit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
str: string;

implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
str:=Edit1.Text;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
A  : Array[1..100] of String;
i,n : Longint;
z : String;
begin
str:=str+' ';
z:='';
n:=0;
For i:=1 to Length(str) Do
If str[i]<>' ' Then
z:=z+str[i]
Else
Begin
n:=n+1;
A[n]:=z;
z:='';
End;
For i:=n Downto 1 Do
Edit2.Text:=A[n]+' ';
end;
end.

Но моя недопрограмма выводит только последнее слово и всё. Как исправить? :)
 
D

Dock1100

Вот, но только не выводит первое слово
Код:
procedure TForm5.Button1Click(Sender: TObject);
var str,str2:string;
wordstr:array of string;
i,k,l1:integer;
begin
str:=edit1.text;
k:=0;
for i:=1 to Length(str) do
if (str[i]=' ') then k:=K+1;

setlength(WORDSTR,k);
l1:=0;
for I := 0 to Length(str) do
begin
if str[i]<>' ' then wordstr[l1]:=wordstr[l1]+str[i];
if str[i]=' ' then l1:=l1+1;
end;
str2:='';
for i:=k downto 1 do
str2:=str2+wordstr[i]+' ';
str2:=str2+wordstr[0];
edit2.Text:=str2;
end;

P.S. Как помне этой теме место link removed
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!