Strings em Delphi
- Excesso da Internet
1: Várias cordas
As strings são o tipo mais útil de todos os tipos de dados no ObjectPascal. Muitas funções passam argumentos com cordas. Como existem várias maneiras de definir e usar strings em Delphi, incluindo cordas típicas (cordas) em Pascal, longas cordas apoiadas por Delphi (Ansistrings), matrizes de caracteres semelhantes à linguagem C (Arrayofchar) e apontar para os caracteres Pointer (PCHAR), etc. O artigo a seguir falará sobre as diferenças e precauções desses tipos em definição e aplicação.
1. Cordas tradicionais de Pascal
Em Pascal, uma corda típica é uma sequência de caracteres de um certo comprimento. Cada string tem um comprimento definido (o padrão é 255), e o seguinte é um exemplo:
Var
Endereço: String;
Código: String [50];
O endereço é uma sequência com um comprimento de 255 e o comprimento máximo do código é 50.
O comprimento tradicional da corda Pascal não pode exceder 255.
Você pode usar a operação de concatenação de string "+" para concatenar strings juntos:
Resultado: = string1+string2;
2. Longas cordas em Delphi
Além de apoiar as cordas tradicionais de Pascal Short, Delphi também suporta cordas longas. Personagens longos são chamados de Ansistring. Strings longas alocam dinamicamente a memória, ou seja, a memória necessária para as strings é alocada apenas ao usar strings, para que seu comprimento não seja limitado. Em Delphi, se você usar String1: String como Tipo Descrição, String1 pode ser uma sequência curta ou uma sequência longa, dependendo das configurações da chave $ H no compilador. O valor padrão é $ H+, que representa a string ANSI Long. As cordas longas terminam com o NULL, o que significa que as cordas longas são totalmente compatíveis com seqüências de cordas de ponta nula na linguagem C.
O comprimento máximo de uma string pode ser definido através da função SetLength:
SetLength (String1.100);
3. Matriz de personagens semelhante a c
Uma matriz começando com 0 pode ser usada para armazenar strings terminando com nulo. A seguinte definição:
Var
Nome: Array [0..50] OFCHAR;
4. Ponteiro de PChar
Se o ExendedSyntax em Delphi foi definido (padrão), a matriz de caracteres começando com 0 é totalmente compatível com o ponteiro PCHO apontando para o personagem, porque o nome da matriz do personagem que está começando com 0 é o ponteiro apontando para o primeiro caractere da matriz do personagem . Você pode pagar diretamente a string ao ponteiro PChar. Por exemplo:
var
P: PCHAR;
Começar
P: = 'Helloworld';
fim;
Dessa forma, P aponta para um pedaço de memória que armazena a corda 'Helloworld' e termina com nulo.
Muitas funções da API da interface do programa de aplicativos do Windows exigem o tipo de PCHA como parâmetro. Ao usar o ponteiro PCHO, primeiro usa a função getMem (Varp: Pointer; Tamanho: Inteiro) para aplicar a alocação de memória. libere memória. Por exemplo:
Varwindir, Sysdir: PChar;
Começar
GetMem (windir, 256); {alocada memória para ponteiros}
GetWindowsDirectory (Windir, 128); {Coloque o diretório de instalação do Windows em Windir}
ShowMessage ('WindowsDirectoryis'+windir); {show resultado}
Fim;
Dois: conversão de string
O acima introduz a definição e o uso de quatro tipos de strings em Delphi. Como várias funções têm requisitos diferentes para tipos de parâmetros de sequência, é necessária a conversão do tipo de sequência.
1. Você pode usar strpas para converter uma string que termina com nulo em uma corda curta Pascal. O strpcopy completa a conversão oposta.
2. Como as cordas longas terminam com o NULL, você pode converter seqüências longas em tipo de PChar com fundido. O uso é: PChar (s), S é uma corda longa. O elenco retorna um ponteiro para o primeiro caractere da corda longa, e a corda pontiaguda termina com nulo. Por exemplo:
Var
Legenda, mensagem: string;
Legenda: = 'Helloworld!';
MsSage: = 'ThisisatestOflongString';
MessageBox (0, PChar (Mensagem), PChar (Legenda), MB_OK);
Resumo: Ao usar strings em Delphi, você deve sempre ser claro sobre o tipo de string para evitar confusão. Ao entender as cordas, você deve vincular strings a ponteiros e alocações de memória para melhorar a compreensão.