Есть строка:
HG_ALERT1  hgrunt/alert1.wav
Необходимо удалить вспе после пробела, и оставить толкьо HG_ALERT1
Как это сделать?
			
		Модератор: Модераторы
s_in='HG_ALERT1 hgrunt/alert1.wav';
s_out:=Copy(s_in,1,Pos(' ',s_in));s_in:='HG_ALERT1 hgrunt/alert1.wav';
s_out:=Copy(s_in,9,Length(s_in));
s_in:='HG_ALERT1 hgrunt/alert1.wav';
s_out:=s_in;
Delete (s_out,10,Length(s_out));s_in:='HG_ALERT1 hgrunt/alert1.wav';
s_out:=Copy(s_in,1,9);function GetFirstWorldInString(StrIn: string): string;
var
  ic, l: integer;
begin
  l := length(StrIn);
  if l < 1 then Result := ''
  else for ic := 1 to l begin
    if StrIn[ic] = #20 then break
    else Result += StrIn[ic]; 
  end;
end;function GetFirstWorldInString(StrIn: string): string;
var
  p, l: integer;
begin
  l := length(StrIn);
  if l < 1 then Result := ''
  else begin
    p := pos(#20, StrIn);
    if p > 1 then Result := copy(StrIn, 1, pred(p))
    else if p = 1 Result := ''
    else Result := StrIn; 
  end;
end;
Function GetFirstWordInString(Const aString: String): String;
Var
  aProcess: TProcess;
  aStringList: TStringList;
Begin
  aStringList := TStringList.Create;
  aStringList.Text := aString;
  aStringList.SaveToFile('1.txt');
  aProcess := TProcess.Create(nil);
  aProcess.CommandLine := 'cmd /C "FOR /F "tokens=1" %i IN (1.txt) DO echo %i"';
  aProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
  aProcess.Execute;
  aStringList.LoadFromStream(aProcess.Output);
  Result := aStringList[2];
  aStringList.Free;
  aProcess.Free;
End;


uses StrUtils;
...
s := 'HG_ALERT1 hgrunt/alert1.wav';
FirstWord := Copy2Symb(s, ' ');function CopyL(const S: String; const Srch:String):String;
begin
  Result:=Copy(s,1,Pos(Srch,S)-1);
end;
begin
   s := 'HG_ALERT1 hgrunt/alert1.wav';
   FirstWord := CopyL(s, ' ');
end;
function GetFirstWorldInString(StrIn: string): string;
    var
      ic, l: integer;
      gtc: DWord;
    begin
      l := length(StrIn);
      if l < 1 then Result := ''
      else for ic := 1 to l begin
        gtc := gettickcount;
        if StrIn[ic] = #20 then break
        else Result += StrIn[ic];
        if gettickcount > (gtc + 60000) then begin
          showmessage('Извините, НО! Ваш ПК слишком устарел для выполнения поставленной задачи!');
          Result := '';
          exit;
        end;
      end;
    end;
uses StrUtils...
...
procedure TMainForm.Button1Click(Sender:TObject);
  const intext = 'HG_ALERT1 hgrunt/alert1.wav';
  function ReturnFirstWird (FirstWord: string; DoMessage: boolean = False): string;
    function CharCount(InStr: string; TheChar: Char): integer;
      var I: Integer;
    begin
      result:= 0; i:= 0;
      if Length(InStr) = 0 then exit;
      repeat
        if (InStr[i] = TheChar) then inc(result);
        inc(i);
      until (i > Length(InStr));
    end;
    function CopyFN(Str: string; Simvol: Char; FromSimvolNomer: integer): string;
      var StartPos, EndPos: integer;
        i, j: Integer;
    begin
    Result := '';
      if (pos(Simvol, Str) = 0) then exit;
      StartPos:= 0; j:= 0;
      Str:= trim(Str);
      if not (Str[1] = Simvol) then Str:= Simvol + Str;
      if not (Str[length(Str)] = Simvol) then Str:= Str + Simvol;
        for i:= 1 to Length(trim(Str))-1 do begin
          if (Str[i] = Simvol) then begin
            Inc(j);
            if (j = FromSimvolNomer) then begin
              StartPos:= i;
              break;
            end;
          end;
        end;
      if (StartPos = 0) then exit;
      EndPos:= PosEx(Simvol, Str, StartPos+1);
        if (EndPos > StartPos)
          then result := copy(Str, StartPos+1, EndPos-StartPos-1)
          else result := '';
    end;
  begin
    if (CharCount(FirstWord, #32) = 0)
      then begin
        if DoMessage then showmessage('Менее двух слов');
        Result:= '';
        Exit;
      end
      else begin
        Result:= CopyFN(FirstWord,#32,1);
      end;
  end;
begin
  showmessage(ReturnFirstWird(intext));
end;
 
 procedure ...
var s:string;
begi..
s:='HG_ALERT1';  // it's my way! =0
end;

Сейчас этот форум просматривают: Yandex [Bot] и гости: 1