|
Вопрос # 2 320/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!не подскажете как найти все пробелы в строке? задание такое: есть Фамилия Имя Отчество, преобразовать в Фамилия И.О.
 |
Вопрос задала: 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 (статус: Посетитель), 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;
// результат Фамилия И
|
|
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 (статус: Посетитель), 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 (статус: Посетитель), 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™ (статус: Доктор наук), 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 (статус: Посетитель), 20 января 2009, 13:27 [#10]:
[Error] Unit1.pas(7): Declaration expected but identifier 'StrUtils' found
|
|
Milady (статус: Посетитель), 20 января 2009, 13:29 [#11]:
StrtUtilits прописывала руками для того чтобы была понятна функция PosEx, в итоге не то не другое не понятно......
|
|
Вадим К (статус: Академик), 20 января 2009, 13:33 [#12]:
приводите ошибку - приводите код. А то я уже привык к тому, что покажешь, как надо написать, а человек всё равно напишет как сам хочет.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 20 января 2009, 13:34 [#13]:
uses
Windows, // <--- Запятая
Messages, // <--- Запятая
SysUtils, // <--- Запятая
Variants, // <--- Запятая (хотя этот модуль тебе тут не нужен)
Classes, // <--- Запятая
Graphics, // <--- Запятая
Controls, // <--- Запятая
Forms, // <--- Запятая
Dialogs, // <--- Запятая
StdCtrls, // <--- Запятая
StrUtils; // <--- Точка с запятой!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 20 января 2009, 13:35 [#14]:
Где скачать телепатические способности и перепрошить мозг??? ДАЙТЕ ССЫЛКУ ПЛИЗЗЗ!!!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Milady (статус: Посетитель), 20 января 2009, 13:41 [#15]:
Прошу прощения что понимаю все ваши советы далеко не с первого раза, и говорю ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ ВСЕМ!
ПОМОЛО!!!
|
|
Вадим К (статус: Академик), 20 января 2009, 13:56 [#16]:
то min@y™
не советую это делать. а если прошивка палёная? А если это Hot FullFlash? и от какой-нибудь девочки? потом же в голове такие мысли будут лазить...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 20 января 2009, 14:19 [#17]:
FullFlash не надо, достаточно патч.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|