带字符串的 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.