Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288

Как получить два первых символа строки

12.10.2012, 12:54. Показов 2183. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа, её суть в том что в поле мемо1 мы заносим фамилию(Едит1) и телефон(Едит2), с помощью баттон1, надо сделать 10 записей, а пот нажимая на второй баттон в мемо2 должно вывестись фамили человека номер которого имеет первые цифры 64, телефонный номер состоит из 6 цифр

Delphi
1
2
3
4
5
type
  Person = record
    FIO : string[20];
    nom : integer;
  end;
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=1;
with mas[i] do
  begin
    FIO:=Edit1.Text;
    nom:=StrToInt(Edit2.Text);
    Memo1.Lines.Add(fio + #32 + inttostr(nom));
  end;;
end;
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button2Click(Sender: TObject);
var
c:integer;
v:string;
begin
for i:= 0 to Memo1.Lines.Count do
  v:=Memo1.Lines[i]+v;
with mas[c] do
  for c:= 0 to memo1.Lines.count do
    begin
      if (nom div 1000) = 64 then
        memo2.Lines.Add(FIO)
    end;
end;
второй баттон не делает то что нужно..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.10.2012, 12:54
Ответы с готовыми решениями:

Два первых символа строки
Необходимо присвоить переменной типа string первые два символа строки. Строка может быть какой угодно и какой угодно длины, если строка...

Определить, являются ли два первых символа типизированного файла цифрами
Дан символьный файл f. В файле f не менее двух компонент. Определить, являются ли два первых символа файла цифрами. Если да то установить,...

Файл: Определить, являются ли два первых символа файла цифрами?
Здравствуйте, стоит следующая задача: Дан символьный файл f. В файле f не менее двух компонент. Определить, являются ли два первых...

19
angstrom
12.10.2012, 13:02
Цитата Сообщение от cargerdree Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button2Click(Sender: TObject);
var
c:integer;
v:string;
begin
for i:= 0 to Memo1.Lines.Count do
  v:=Memo1.Lines[i]+v;
with mas[c] do
  for c:= 0 to memo1.Lines.count do
    begin
      if (nom div 1000) = 64 then
        memo2.Lines.Add(FIO)
    end;
end;
второй баттон не делает то что нужно..
А с чего это должно быть правильно? Обе переменные c и v используются не инициализированными. В них может находиться что угодно.
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288
12.10.2012, 13:14  [ТС]
angstrom, это уже я затупил.. for с v появился в результате эксперементов.. но я его так и не убрал.. он лишний и удалить его надо.
0
angstrom
12.10.2012, 13:19
А как это?
Delphi
1
with mas[c] do
и это?
Delphi
1
memo2.Lines.Add(FIO)
откуда FIO проявилась?
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288
12.10.2012, 13:25  [ТС]
angstrom, там должно быть i
а FIO и было всегда..
0
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
12.10.2012, 13:48
телефонный номер состоит из 6 цифр
Тогда надо делить на 10000, а не на 1000.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
12.10.2012, 13:56
Цитата Сообщение от cargerdree Посмотреть сообщение
имеет первые цифры 64, телефонный номер состоит из 6 цифр
Delphi
1
if (nom div 10000) = 64 then
P.S. Не увидел, murderer уже ответил...
0
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288
12.10.2012, 14:05  [ТС]
murderer, antikiler_, нифига, все равно не выводит(
0
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
12.10.2012, 14:19
Delphi
1
2
3
4
5
6
7
for i:=0 to Memo1.Lines.Count do
begin
  v:=Memo1.Lines[i]+v;
  with mas[i] do
    if nom div 10000=64 then
      memo2.Lines.Add(FIO)
end;
0
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288
12.10.2012, 14:25  [ТС]
murderer, он выводит только последнюю возможную а не все.. я уже до этого доходил((
0
angstrom
12.10.2012, 14:27
Как показан код, так никогда не выведет. Много мусора и расплывчатые ответы - Так было всегда.
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288
12.10.2012, 14:34  [ТС]
angstrom, а? не совсем понял
0
angstrom
12.10.2012, 14:36
Покажи нормальный код, где назначена переменная mas, почему опрос идёт так
Delphi
1
  for i:=0 to Memo1.Lines.Count do
а не
Delphi
1
  for i:=0 to Memo1.Lines.Count - 1 do
без недомолвок, чтобы не гадать.
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
12.10.2012, 14:37
Цитата Сообщение от cargerdree Посмотреть сообщение
он выводит только последнюю возможную а не все
Конечно..., потому что данная процедура
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=1;
with mas[i] do
  begin
    FIO:=Edit1.Text;
    nom:=StrToInt(Edit2.Text);
    Memo1.Lines.Add(fio + #32 + inttostr(nom));
  end;;
end;
постоянно заносит только ОДНУ запись в масив и перезаписывает ее на одну и туже позицию i:=1; , поэтому в массиве у тебя постоянно только одна запись - последняя..
1
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288
12.10.2012, 14:53  [ТС]
angstrom,
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  Person = record
    FIO : string[20];
    nom : Longint;
  end;
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  i:Longint;
  mas:array [1..10] of Person;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=1;
with mas[i] do
begin
FIO:=Edit1.Text;
nom:=StrToInt(Edit2.Text);
Memo1.Lines.Add(fio + #32 + inttostr(nom));
end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
v:string;
begin
for i:=0 to Memo1.Lines.Count do
begin
  v:=Memo1.Lines[i]+v;
  with mas[i] do
    if nom div 10000=64 then
      memo2.Lines.Add(FIO)
end;
 
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
memo2.Clear;
end;
 
end.
0
angstrom
12.10.2012, 15:30
Как-то так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var
  Form1: TForm1;
  Count : Integer = 1;
  mas : array[1..10] of Person;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  with mas[Count] do
  begin
    FIO := Edit1.Text;
    nom := StrToInt(Edit2.Text);
    Memo1.Lines.Add(fio + #32 + IntToStr(nom));
  end;
  inc(Count);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  I : Integer;
begin
  for I := 0 to Memo1.Lines.Count  - 1 do
  with mas[succ(I)] do
  begin
    if nom div 10000 = 64 then
      memo2.Lines.Add(FIO)
  end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
//
end;
 
end.
Добавлено через 19 минут
Желательно добавить ещё одну кнопку для сброса
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button3Click(Sender: TObject);
begin
  Count := 1;
  Memo1.Clear;
  Memo2.Clear;
  FillChar(Mas, SizeOf(Mas), 0);
end;
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288
12.10.2012, 15:31  [ТС]
можешь объяснить пару моментов:
Цитата Сообщение от angstrom Посмотреть сообщение
inc(Count);

Цитата Сообщение от angstrom Посмотреть сообщение
mas[succ(I)]
0
angstrom
12.10.2012, 15:33
Такое соответствие.
inc(I) = I := I + 1
succ(I) = I + 1
10 / 10 / 1
Регистрация: 20.04.2012
Сообщений: 288
12.10.2012, 17:24  [ТС]
angstrom, все равно выводит только последнего..

Добавлено через 1 час 28 минут
angstrom, все заработало!!! спс

Добавлено через 3 минуты
Цитата Сообщение от angstrom Посмотреть сообщение
FillChar(Mas, SizeOf(Mas), 0);
а что это делает?
0
angstrom
12.10.2012, 21:49
Это я добавил как-бы кнопку очистки и данная процедура очищает массив.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2012, 21:49
Помогаю со студенческими работами здесь

Даны три строки символов. Сформировать четвёртую строку по правилу
Я не знаю как написать эти две программы 1.Даны три строки символов. Сформировать четвёртую строку по правилу: она должна состоять из...

Зачем для перевода строки используют два символа #13#10, если достаточно #13?
кто то мне может объяснить или дать чё почитать? зачем для перевода строки используют два символа #13 и #10 если и #13 вполне хватает...

Получить два первых символа строки
Как получить 2 первых символа строки?

Вырезать два первых символа символьной строки и поместить их в конец строки
Помоги те пожалуйста, решите сколько сможете. Задачи на строки. 2. Вырежьте два первых символа символьной строки и поместите их в...

Вырезать два первых символа символьной строки и поместить их в конец данной строки
Вырезать два первых символа символьной строки и поместить их в конец данной строки.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru