Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 320

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!не подскажете как найти все пробелы в строке? задание такое: есть Фамилия Имя Отчество, преобразовать в Фамилия И.О.

Milady Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Milady (статус: Посетитель)
Вопрос отправлен: 20 января 2009, 11:28
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Вот такой вариант сойдёт?

program p2320;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  StrUtils;
 
const
  S = 'Martin Luther King';
 
var
  P1, P2: Integer;
  R: string;
 
begin
  P1:= PosEx(' ', S, 1);
  P2:= PosEx(' ', S, P1 + 1);
 
  R:= Copy(S, 1, P1) + S[P1 + 1] + '.' + S[P2 + 1] + '.';
  WriteLn(R);
 
  ReadLn;
end.

Ахтунг! Проверки на корректность значений P1 и P2 тут нет, сам сделай.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 20 января 2009, 11:58
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 17; последнее сообщение — 20 января 2009, 14:19; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 20 января 2009, 11:32 [#1]:

есть такие функции pos('что ищем', 'где ищем') и posex('что ищем', 'где ищем', с_какой_позиции)
Эти функции возвращают 0, если ничего не нашли, или позиции, с которой нашли. Дальше сами справитесь?
Галочка "подтверждения прочтения" - вселенское зло.
Milady

Milady (статус: Посетитель), 20 января 2009, 11:48 [#2]:

нет:)
// начальная строка Фамилия Имя Отчество
s:=Edit1.Text;
p:=length(Edit1.Text);
k:=pos(' ',s);
Delete (s,k+2,p-K+2);
Label2.Caption:= s;

// результат Фамилия И
Milady

Milady (статус: Посетитель), 20 января 2009, 12:19 [#3]:

а что за функция PosEx? пробывала запускать на паскал и на Delphi, не идет, и еще если это функция Pos то у нее только 2 параметра...
Помогите пожайлуста:):)!
min@y™

min@y™ (статус: Доктор наук), 20 января 2009, 12:49 [#4]:

PosEx() находится в модуле StrUtils. Обрати внимание, что этот модуль в моём примере объявлен в uses.
Неужели трудно нажать Ctrl + F1?

Цитата:


Unit

StrUtils

Category

string handling routines

Delphi syntax:

function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;

C++ syntax:

extern PACKAGE int __fastcall PosEx(const AnsiString SubStr, const AnsiString S, unsigned Offset = 1);

Description

PosEx returns the index of SubStr in S, beginning the search at Offset. If Offset is 1 (default), PosEx is equivalent to Pos.

PosEx returns 0 if SubStr is not found, if Offset is greater than the length of S, or if Offset is less than 1.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Milady

Milady (статус: Посетитель), 20 января 2009, 13:08 [#5]:

[Error] Unit1.pas(9): Declaration expected but identifier 'SysUtils' found;
[Error] Unit1.pas(7): Declaration expected but identifier 'StrUtils' found


возникает в период компиляции
Вадим К

Вадим К (статус: Академик), 20 января 2009, 13:11 [#6]:

код показывайте, телепатия плохо работает
Галочка "подтверждения прочтения" - вселенское зло.
Milady

Milady (статус: Посетитель), 20 января 2009, 13:17 [#7]:

unit Unit1;

interface

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


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

var
Form1: TForm1;


implementation


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s,r:string;
p1,p2:integer;
begin
S:=Edit1.Text;
P1:= PosEx(' ', S, 1);
P2:= PosEx(' ', S, P1 + 1);
R:= Copy(S, 1, P1) + S[P1 + 1] + '.' + S[P2 + 1] + '.';
Label2.caption:=r;
end;

end.


+ PosEx ругается
min@y™

min@y™ (статус: Доктор наук), 20 января 2009, 13:18 [#8]:

Скопируй сюда первые 15-20 строк модуля Unit.pas.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 20 января 2009, 13:25 [#9]:

Dialogs, StdCtrls; SysUtils; StrUtils;
Это что такое? какие точки с запятой? зачем дублировать? выглядеть должно где то так
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, StrUtils;
Галочка "подтверждения прочтения" - вселенское зло.
Milady

Milady (статус: Посетитель), 20 января 2009, 13:27 [#10]:

[Error] Unit1.pas(7): Declaration expected but identifier 'StrUtils' found
Milady

Milady (статус: Посетитель), 20 января 2009, 13:29 [#11]:

StrtUtilits прописывала руками для того чтобы была понятна функция PosEx, в итоге не то не другое не понятно......
Вадим К

Вадим К (статус: Академик), 20 января 2009, 13:33 [#12]:

приводите ошибку - приводите код. А то я уже привык к тому, что покажешь, как надо написать, а человек всё равно напишет как сам хочет.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 20 января 2009, 13:34 [#13]:

uses
  Windows,  // <--- Запятая
  Messages, // <--- Запятая
  SysUtils, // <--- Запятая
  Variants, // <--- Запятая (хотя этот модуль тебе тут не нужен)
  Classes,  // <--- Запятая
  Graphics, // <--- Запятая
  Controls, // <--- Запятая
  Forms,    // <--- Запятая
  Dialogs,  // <--- Запятая
  StdCtrls, // <--- Запятая
  StrUtils; // <--- Точка с запятой!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 20 января 2009, 13:35 [#14]:

Где скачать телепатические способности и перепрошить мозг??? ДАЙТЕ ССЫЛКУ ПЛИЗЗЗ!!!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Milady

Milady (статус: Посетитель), 20 января 2009, 13:41 [#15]:

Прошу прощения что понимаю все ваши советы далеко не с первого раза, и говорю ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ ВСЕМ!
ПОМОЛО!!!
Вадим К

Вадим К (статус: Академик), 20 января 2009, 13:56 [#16]:

то min@y™
не советую это делать. а если прошивка палёная? А если это Hot FullFlash? и от какой-нибудь девочки? потом же в голове такие мысли будут лазить...
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 20 января 2009, 14:19 [#17]:

FullFlash не надо, достаточно патч.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.02 сек.