带字符串的 Pascal 记录
Pascal record with string
我正在尝试使用记录来存储人名和电话。
这是我第一次在 Pascal 中尝试这个,但我陷入了一个永远不会实现的状态,因为我还不知道如何实现这个 IF。
如果我在 IF 之外尝试它可以工作,但它永远不会进入我的条件。
t此条件在 程序中 incluir_pessoa。
主程序
program agenda1;
uses agenda1_procedures;
begin
processar_agenda;
end.
程序
unit agenda1_procedures;
interface
uses crt, ReadAnyKey1;
type type_sexo = (feminino, masculino, outro);
type Type_pessoa = record
primeiro_nome, ultimo_nome: string;
sexo: type_sexo;
telefone: string;
end;
type type_pessoas = array of type_pessoa;
var pessoa: type_pessoas;
procedure processar_agenda;
procedure imprimir_menu(var escolha: char);
procedure processar_escolha(var escolha: char);
procedure incluir_pessoa(var pessoa: type_pessoas);
implementation
//---------------------------------------
// PROCESSAR AGENDA
//---------------------------------------
procedure processar_agenda;
var escolha: char;
begin
repeat
imprimir_menu(escolha);
processar_escolha(escolha);
until escolha = '0';
end;
//---------------------------------------
// IMPRIMIR MENU
//---------------------------------------
procedure imprimir_menu(var escolha: char);
begin
clrscr;
writeln('****************************************************************************************');
writeln('* MENU *');
writeln('****************************************************************************************');
writeln('* 0-Sair *');
writeln('* 1-Incluir pessoa *');
writeln('* 2-Modificar pessoa *');
writeln('* 3-Excluir pessoa *');
writeln('* *');
writeln('* *');
writeln('****************************************************************************************');
gotoxy(3,9); write('Digite uma escolha: '); read(escolha);
end;
//---------------------------------------
// INCLUIR PESSOA
//---------------------------------------
procedure incluir_pessoa(var pessoa: type_pessoas);
var i: integer;
begin
if length(pessoa) = 0 then
setlength(pessoa,1);
writeln('Incluir pessoa na agenda');
writeln;
readln;
for i:=0 to length(pessoa) do
begin
readln;
//***** CONDITION WHICH NEVER COME TRUE !!!!! <------------------- *****
if pessoa[0].primeiro_nome = ' ' then
begin
write('Primeiro nome: '); readln(pessoa[0].primeiro_nome);
//test
writeln(pessoa[0].primeiro_nome);
readln;
end;
end;
//test
write('Primeiro nome: '); readln(pessoa[0].primeiro_nome);
write('Pessoa:',pessoa[0].primeiro_nome);
readln;
end;
//---------------------------------------
// PROCESSAR escolha
//---------------------------------------
procedure processar_escolha(var escolha: char);
begin
case escolha of
'0': exit;
'1': incluir_pessoa(pessoa);
// 2:
// 3:
end;
end;
end.
是否要检查名称是否为空?或者如果它是一个 space 字符?因为在你的情况下你要求 space.
我正在尝试使用记录来存储人名和电话。
这是我第一次在 Pascal 中尝试这个,但我陷入了一个永远不会实现的状态,因为我还不知道如何实现这个 IF。
如果我在 IF 之外尝试它可以工作,但它永远不会进入我的条件。
t此条件在 程序中 incluir_pessoa。
主程序
program agenda1;
uses agenda1_procedures;
begin
processar_agenda;
end.
程序
unit agenda1_procedures;
interface
uses crt, ReadAnyKey1;
type type_sexo = (feminino, masculino, outro);
type Type_pessoa = record
primeiro_nome, ultimo_nome: string;
sexo: type_sexo;
telefone: string;
end;
type type_pessoas = array of type_pessoa;
var pessoa: type_pessoas;
procedure processar_agenda;
procedure imprimir_menu(var escolha: char);
procedure processar_escolha(var escolha: char);
procedure incluir_pessoa(var pessoa: type_pessoas);
implementation
//---------------------------------------
// PROCESSAR AGENDA
//---------------------------------------
procedure processar_agenda;
var escolha: char;
begin
repeat
imprimir_menu(escolha);
processar_escolha(escolha);
until escolha = '0';
end;
//---------------------------------------
// IMPRIMIR MENU
//---------------------------------------
procedure imprimir_menu(var escolha: char);
begin
clrscr;
writeln('****************************************************************************************');
writeln('* MENU *');
writeln('****************************************************************************************');
writeln('* 0-Sair *');
writeln('* 1-Incluir pessoa *');
writeln('* 2-Modificar pessoa *');
writeln('* 3-Excluir pessoa *');
writeln('* *');
writeln('* *');
writeln('****************************************************************************************');
gotoxy(3,9); write('Digite uma escolha: '); read(escolha);
end;
//---------------------------------------
// INCLUIR PESSOA
//---------------------------------------
procedure incluir_pessoa(var pessoa: type_pessoas);
var i: integer;
begin
if length(pessoa) = 0 then
setlength(pessoa,1);
writeln('Incluir pessoa na agenda');
writeln;
readln;
for i:=0 to length(pessoa) do
begin
readln;
//***** CONDITION WHICH NEVER COME TRUE !!!!! <------------------- *****
if pessoa[0].primeiro_nome = ' ' then
begin
write('Primeiro nome: '); readln(pessoa[0].primeiro_nome);
//test
writeln(pessoa[0].primeiro_nome);
readln;
end;
end;
//test
write('Primeiro nome: '); readln(pessoa[0].primeiro_nome);
write('Pessoa:',pessoa[0].primeiro_nome);
readln;
end;
//---------------------------------------
// PROCESSAR escolha
//---------------------------------------
procedure processar_escolha(var escolha: char);
begin
case escolha of
'0': exit;
'1': incluir_pessoa(pessoa);
// 2:
// 3:
end;
end;
end.
是否要检查名称是否为空?或者如果它是一个 space 字符?因为在你的情况下你要求 space.