{"id":4099,"date":"2023-02-08T19:36:39","date_gmt":"2023-02-08T18:36:39","guid":{"rendered":"https:\/\/gdksoftware.com\/knowledgebase\/unit-specific-typing-in-delphi"},"modified":"2023-03-22T13:11:46","modified_gmt":"2023-03-22T12:11:46","slug":"unit-digitacao-especifica-em-delphi","status":"publish","type":"knowledge","link":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi","title":{"rendered":"&#8220;Unit&#8221; Digita\u00e7\u00e3o espec\u00edfica em Delphi"},"content":{"rendered":"<p>Os tipos primitivos t\u00eam regras de convers\u00e3o padr\u00e3o, muitas linguagens de programa\u00e7\u00e3o funcionam dessa forma por padr\u00e3o. Isto \u00e9 para que voc\u00ea n\u00e3o tenha que digitar tudo e \u00e9 realmente uma conveni\u00eancia. Por exemplo, voc\u00ea ser\u00e1 capaz de atribuir um Integer a um Extended sem problemas, tanto passando um 42 literal como atribuindo uma vari\u00e1vel do tipo Integer.<\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Hello<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">var<\/span>\r\n  SomeNumber<span style=\"color: #333333;\">:<\/span> <span style=\"color: #333399; font-weight: bold;\">Extended<\/span><span style=\"color: #333333;\">;<\/span>\r\n  AnotherNumber<span style=\"color: #333333;\">:<\/span> <span style=\"color: #333399; font-weight: bold;\">Integer<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  AnotherNumber <span style=\"color: #333333;\">:=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">6<\/span><span style=\"color: #333333;\">;<\/span>\r\n  SomeNumber <span style=\"color: #333333;\">:=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">2<\/span><span style=\"color: #333333;\">;<\/span> <span style=\"color: #888888;\">\/\/ works<\/span>\r\n  SomeNumber <span style=\"color: #333333;\">:=<\/span> AnotherNumber<span style=\"color: #333333;\">;<\/span> <span style=\"color: #888888;\">\/\/ works<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n<\/pre>\n<\/div>\n<p>Mesmo que digitem aliasing, os tipos ainda s\u00e3o os tipos que eram e t\u00eam regras de convers\u00e3o autom\u00e1tica:<\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">type<\/span>\r\n  ANewType <span style=\"color: #333333;\">=<\/span> <span style=\"color: #333399; font-weight: bold;\">Extended<\/span><span style=\"color: #333333;\">;<\/span>\r\n  AnotherNewType <span style=\"color: #333333;\">=<\/span> <span style=\"color: #333399; font-weight: bold;\">Integer<\/span><span style=\"color: #333333;\">;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">implementation<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">Hello<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">var<\/span>\r\n  SomeNumber<span style=\"color: #333333;\">:<\/span> ANewType<span style=\"color: #333333;\">;<\/span>\r\n  AnotherNumber<span style=\"color: #333333;\">:<\/span> AnotherNewType<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  AnotherNumber <span style=\"color: #333333;\">:=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">6<\/span><span style=\"color: #333333;\">;<\/span>\r\n  SomeNumber <span style=\"color: #333333;\">:=<\/span> <span style=\"color: #0000dd; font-weight: bold;\">2<\/span><span style=\"color: #333333;\">;<\/span> <span style=\"color: #888888;\">\/\/ works<\/span>\r\n  SomeNumber <span style=\"color: #333333;\">:=<\/span> AnotherNumber<span style=\"color: #333333;\">;<\/span> <span style=\"color: #888888;\">\/\/ works<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n<\/pre>\n<\/div>\n<p>Se voc\u00ea realmente quer regras de convers\u00e3o rigorosas, porque, por exemplo, voc\u00ea quer evitar que os medidores sejam atribu\u00eddos a segundos ou vice-versa, voc\u00ea precisar\u00e1 criar novos tipos. E novos tipos s\u00e3o criados usando ou um registro ou uma classe.<\/p>\n<p>Para permitir certas convers\u00f5es, voc\u00ea pode adicionar essas regras aos tipos utilizando a sobrecarga do operador. (veja https:\/\/docwiki.embarcadero.com\/RADStudio\/Sydney\/en\/Operator_Overloading_(Delphi))<\/p>\n<p>No FPC a sintaxe \u00e9 diferente, mas voc\u00ea pode fazer o mesmo https:\/\/www.freepascal.org\/docs-html\/ref\/refse104.html#x224-24800015.3<\/p>\n<p>Voc\u00ea pode at\u00e9 mesmo fazer regras de convers\u00e3o para metros * segundos criando um tipo de metro por segundo.<\/p>\n<p>Aqui est\u00e1 um exemplo de como funciona em Delphi:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"delphi\" style=\"font-family: monospace;\"><span style=\"color: #000000; font-weight: bold;\">type<\/span>\r\n  metersPerSecond <span style=\"color: #000066;\">=<\/span> <span style=\"color: #000000; font-weight: bold;\">record<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">private<\/span>\r\n    m<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Extended<\/span><span style=\"color: #000066;\">;<\/span>\r\n    s<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Extended<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n    value<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">extended<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n    mset<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Boolean<\/span><span style=\"color: #000066;\">;<\/span>\r\n    sset<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Boolean<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n    <span style=\"color: #000000; font-weight: bold;\">function<\/span> Units<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">public<\/span>\r\n    <span style=\"color: #000000; font-weight: bold;\">function<\/span> ToString<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n  meters <span style=\"color: #000066;\">=<\/span> <span style=\"color: #000000; font-weight: bold;\">record<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">private<\/span>\r\n    value<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Extended<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n    <span style=\"color: #000000; font-weight: bold;\">function<\/span> Units<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">public<\/span>\r\n    <span style=\"color: #000000; font-weight: bold;\">class<\/span> operator Implicit<span style=\"color: #000066;\">(<\/span>Value<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Extended<\/span><span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> meters<span style=\"color: #000066;\">;<\/span>\r\n    <span style=\"color: #000000; font-weight: bold;\">class<\/span> operator Explicit<span style=\"color: #000066;\">(<\/span>Value<span style=\"color: #000066;\">:<\/span> meters<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n    <span style=\"color: #000000; font-weight: bold;\">class<\/span> operator Multiply<span style=\"color: #000066;\">(<\/span>ms<span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span> m<span style=\"color: #000066;\">:<\/span> meters<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n    <span style=\"color: #000000; font-weight: bold;\">function<\/span> ToString<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n  seconds <span style=\"color: #000066;\">=<\/span> <span style=\"color: #000000; font-weight: bold;\">record<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">private<\/span>\r\n    value<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Extended<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n    <span style=\"color: #000000; font-weight: bold;\">function<\/span> Units<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">public<\/span>\r\n    <span style=\"color: #000000; font-weight: bold;\">class<\/span> operator Implicit<span style=\"color: #000066;\">(<\/span>Value<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Extended<\/span><span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> seconds<span style=\"color: #000066;\">;<\/span>\r\n    <span style=\"color: #000000; font-weight: bold;\">class<\/span> operator Explicit<span style=\"color: #000066;\">(<\/span>Value<span style=\"color: #000066;\">:<\/span> seconds<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n    <span style=\"color: #000000; font-weight: bold;\">class<\/span> operator Multiply<span style=\"color: #000066;\">(<\/span>ms<span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span> s<span style=\"color: #000066;\">:<\/span> seconds<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n    <span style=\"color: #000000; font-weight: bold;\">function<\/span> ToString<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">implementation<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">uses<\/span>\r\n  SysUtils<span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">class<\/span> operator meters<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Implicit<\/span><span style=\"color: #000066;\">(<\/span>Value<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Extended<\/span><span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> meters<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> Value<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">class<\/span> operator seconds<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Implicit<\/span><span style=\"color: #000066;\">(<\/span>Value<span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">Extended<\/span><span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> seconds<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> Value<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">class<\/span> operator meters<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Explicit<\/span><span style=\"color: #000066;\">(<\/span>Value<span style=\"color: #000066;\">:<\/span> meters<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">m<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> Value<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span><span style=\"color: #000066;\">;<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">mset<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #000000; font-weight: bold;\">True<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">if<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">sset<\/span> <span style=\"color: #000000; font-weight: bold;\">then<\/span>\r\n    Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">s<\/span> <span style=\"color: #000066;\">*<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">m<\/span><span style=\"color: #000066;\">;<\/span> \r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">class<\/span> operator seconds<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Explicit<\/span><span style=\"color: #000066;\">(<\/span>Value<span style=\"color: #000066;\">:<\/span> seconds<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">s<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> Value<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span><span style=\"color: #000066;\">;<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">sset<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #000000; font-weight: bold;\">True<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">if<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">mset<\/span> <span style=\"color: #000000; font-weight: bold;\">then<\/span>\r\n    Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">s<\/span> <span style=\"color: #000066;\">*<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">m<\/span><span style=\"color: #000066;\">;<\/span> \r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">class<\/span> operator seconds<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Multiply<\/span><span style=\"color: #000066;\">(<\/span>ms<span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span> s<span style=\"color: #000066;\">:<\/span> seconds<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> ms<span style=\"color: #000066;\">;<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">s<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> s<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span><span style=\"color: #000066;\">;<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">sset<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #000000; font-weight: bold;\">True<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">if<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">mset<\/span> <span style=\"color: #000000; font-weight: bold;\">then<\/span>\r\n    Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">s<\/span> <span style=\"color: #000066;\">*<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">m<\/span><span style=\"color: #000066;\">;<\/span> \r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">class<\/span> operator meters<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Multiply<\/span><span style=\"color: #000066;\">(<\/span>ms<span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span> m<span style=\"color: #000066;\">:<\/span> meters<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> ms<span style=\"color: #000066;\">;<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">m<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> m<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span><span style=\"color: #000066;\">;<\/span>\r\n  Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">mset<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #000000; font-weight: bold;\">True<\/span><span style=\"color: #000066;\">;<\/span>\r\n  <span style=\"color: #000000; font-weight: bold;\">if<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">sset<\/span> <span style=\"color: #000000; font-weight: bold;\">then<\/span>\r\n    Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">value<\/span> <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">s<\/span> <span style=\"color: #000066;\">*<\/span> Result<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">m<\/span><span style=\"color: #000066;\">;<\/span> \r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">function<\/span> metersPerSecond<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Units<\/span><span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #ff0000;\">'m\/s'<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">function<\/span> metersPerSecond<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">ToString<\/span><span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  <span style=\"color: #000066;\">Assert<\/span><span style=\"color: #000066;\">(<\/span>mset <span style=\"color: #000000; font-weight: bold;\">and<\/span> sset<span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n  Result <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #000066;\">Format<\/span><span style=\"color: #000066;\">(<\/span><span style=\"color: #ff0000;\">'%f%s'<\/span><span style=\"color: #000066;\">,<\/span> <span style=\"color: #000066;\">[<\/span>value<span style=\"color: #000066;\">,<\/span> Units<span style=\"color: #000066;\">]<\/span><span style=\"color: #000066;\">)<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">function<\/span> meters<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Units<\/span><span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #ff0000;\">'m'<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">function<\/span> meters<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">ToString<\/span><span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #000066;\">Format<\/span><span style=\"color: #000066;\">(<\/span><span style=\"color: #ff0000;\">'%f%s'<\/span><span style=\"color: #000066;\">,<\/span> <span style=\"color: #000066;\">[<\/span>value<span style=\"color: #000066;\">,<\/span> Units<span style=\"color: #000066;\">]<\/span><span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">function<\/span> seconds<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">Units<\/span><span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #ff0000;\">'s'<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">function<\/span> seconds<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">ToString<\/span><span style=\"color: #000066;\">:<\/span> <span style=\"color: #000066; font-weight: bold;\">string<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">begin<\/span>\r\n  Result <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #000066;\">Format<\/span><span style=\"color: #000066;\">(<\/span><span style=\"color: #ff0000;\">'%f%s'<\/span><span style=\"color: #000066;\">,<\/span> <span style=\"color: #000066;\">[<\/span>value<span style=\"color: #000066;\">,<\/span> Units<span style=\"color: #000066;\">]<\/span><span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n<span style=\"color: #000000; font-weight: bold;\">var<\/span>\r\n  time<span style=\"color: #000066;\">:<\/span> seconds<span style=\"color: #000066;\">;<\/span>\r\n  distance<span style=\"color: #000066;\">:<\/span> meters<span style=\"color: #000066;\">;<\/span>\r\n  speed<span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n  different_speed<span style=\"color: #000066;\">:<\/span> metersPerSecond<span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">initialization<\/span>\r\n  time <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #0000ff;\">10.0<\/span><span style=\"color: #000066;\">;<\/span>\r\n  distance <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> <span style=\"color: #0000ff;\">3<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n  <span style=\"color: #808080; font-style: italic;\">\/\/ distance := meters; \/\/ does not work, because seconds are not meters!<\/span>\r\n\u00a0\r\n  speed <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> metersPerSecond<span style=\"color: #000066;\">(<\/span>time<span style=\"color: #000066;\">)<\/span> <span style=\"color: #000066;\">*<\/span> distance<span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n  <span style=\"color: #808080; font-style: italic;\">\/\/ or the other way around<\/span>\r\n  speed <span style=\"color: #000066;\">:<\/span><span style=\"color: #000066;\">=<\/span> metersPerSecond<span style=\"color: #000066;\">(<\/span>distance<span style=\"color: #000066;\">)<\/span> <span style=\"color: #000066;\">*<\/span> time<span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n  <span style=\"color: #000066;\">WriteLn<\/span><span style=\"color: #000066;\">(<\/span><span style=\"color: #ff0000;\">'speed -&gt; '<\/span> <span style=\"color: #000066;\">+<\/span> time<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">ToString<\/span> <span style=\"color: #000066;\">+<\/span> <span style=\"color: #ff0000;\">' * '<\/span> <span style=\"color: #000066;\">+<\/span> distance<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">ToString<\/span> <span style=\"color: #000066;\">+<\/span> <span style=\"color: #ff0000;\">' = '<\/span> <span style=\"color: #000066;\">+<\/span> Speed<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">ToString<\/span><span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">;<\/span>\r\n\u00a0\r\n  <span style=\"color: #808080; font-style: italic;\">\/\/ different_speed := distance; \/\/ this doesn't work without explicit conversion<\/span>\r\n\u00a0\r\n  <span style=\"color: #000066;\">WriteLn<\/span><span style=\"color: #000066;\">(<\/span><span style=\"color: #ff0000;\">'different_speed -&gt; '<\/span> <span style=\"color: #000066;\">+<\/span> different_speed<span style=\"color: #000066;\">.<\/span><span style=\"color: #006600;\">ToString<\/span><span style=\"color: #000066;\">)<\/span><span style=\"color: #000066;\">;<\/span>\r\n<span style=\"color: #000000; font-weight: bold;\">end<\/span><span style=\"color: #000066;\">.<\/span><\/pre>\n","protected":false},"featured_media":0,"parent":0,"template":"","class_list":["post-4099","knowledge","type-knowledge","status-publish","hentry","knowledge-category-arquivo-delphi"],"acf":{"author":1545,"type_hero":"compact","hero_image":2063,"hero_image_position":"","hero_title":"\"Unit\" Digita\u00e7\u00e3o espec\u00edfica em Delphi","hero_content":"","hero_link":null,"hero_show_h1":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>&quot;Unit&quot; Digita\u00e7\u00e3o espec\u00edfica em Delphi - GDK Software<\/title>\n<meta name=\"description\" content=\"Formas de utilizar a &quot;unit&quot; em sua program\u00e7\u00e3o Delphi!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"&quot;Unit&quot; Digita\u00e7\u00e3o espec\u00edfica em Delphi\" \/>\n<meta property=\"og:description\" content=\"Formas de utilizar a &quot;unit&quot; em sua program\u00e7\u00e3o Delphi!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi\" \/>\n<meta property=\"og:site_name\" content=\"GDK Software\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-22T12:11:46+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/unit-digitacao-especifica-em-delphi\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/unit-digitacao-especifica-em-delphi\",\"name\":\"\\\"Unit\\\" Digita\u00e7\u00e3o espec\u00edfica em Delphi - GDK Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\"},\"datePublished\":\"2023-02-08T18:36:39+00:00\",\"dateModified\":\"2023-03-22T12:11:46+00:00\",\"description\":\"Formas de utilizar a \\\"unit\\\" em sua program\u00e7\u00e3o Delphi!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/unit-digitacao-especifica-em-delphi#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/unit-digitacao-especifica-em-delphi\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/unit-digitacao-especifica-em-delphi#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Knowledgebase\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Delphi\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/knowledgebase-category\\\/arquivo-delphi\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"&#8220;Unit&#8221; Digita\u00e7\u00e3o espec\u00edfica em Delphi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\",\"name\":\"GDK Software\",\"description\":\"Zet de stip op je horizon\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\"Unit\" Digita\u00e7\u00e3o espec\u00edfica em Delphi - GDK Software","description":"Formas de utilizar a \"unit\" em sua program\u00e7\u00e3o Delphi!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi","og_locale":"pt_BR","og_type":"article","og_title":"\"Unit\" Digita\u00e7\u00e3o espec\u00edfica em Delphi","og_description":"Formas de utilizar a \"unit\" em sua program\u00e7\u00e3o Delphi!","og_url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi","og_site_name":"GDK Software","article_modified_time":"2023-03-22T12:11:46+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi","url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi","name":"\"Unit\" Digita\u00e7\u00e3o espec\u00edfica em Delphi - GDK Software","isPartOf":{"@id":"https:\/\/gdksoftware.com\/pt-br#website"},"datePublished":"2023-02-08T18:36:39+00:00","dateModified":"2023-03-22T12:11:46+00:00","description":"Formas de utilizar a \"unit\" em sua program\u00e7\u00e3o Delphi!","breadcrumb":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/unit-digitacao-especifica-em-delphi#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gdksoftware.com\/pt-br"},{"@type":"ListItem","position":2,"name":"Knowledgebase","item":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento"},{"@type":"ListItem","position":3,"name":"Delphi","item":"https:\/\/gdksoftware.com\/pt-br\/knowledgebase-category\/arquivo-delphi"},{"@type":"ListItem","position":4,"name":"&#8220;Unit&#8221; Digita\u00e7\u00e3o espec\u00edfica em Delphi"}]},{"@type":"WebSite","@id":"https:\/\/gdksoftware.com\/pt-br#website","url":"https:\/\/gdksoftware.com\/pt-br","name":"GDK Software","description":"Zet de stip op je horizon","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gdksoftware.com\/pt-br?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"}]}},"_links":{"self":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge\/4099","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge"}],"about":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/types\/knowledge"}],"acf:post":[{"embeddable":true,"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/team\/1545"}],"wp:attachment":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/media?parent=4099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}