{"id":4631,"date":"2020-07-23T12:47:16","date_gmt":"2020-07-23T11:47:16","guid":{"rendered":"https:\/\/gdksoftware.com\/knowledgebase\/upgrading-delphi-software-the-smart-way"},"modified":"2023-07-11T19:49:56","modified_gmt":"2023-07-11T18:49:56","slug":"upgrading-delphi-software-de-forma-inteligente","status":"publish","type":"knowledge","link":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente","title":{"rendered":"Atualiza\u00e7\u00e3o do software Delphi"},"content":{"rendered":"<p>Este ano (2020), a <a href=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/delphi\">Delphi<\/a> comemora seu 25\u00ba anivers\u00e1rio.Nesses 25 anos, uma enorme quantidade de c\u00f3digo foi escrita. Muitos desses aplicativos ainda est\u00e3o em pleno uso por empresas e indiv\u00edduos. Isso mostra o poder do Delphi; o c\u00f3digo escrito h\u00e1 d\u00e9cadas ainda funciona, mesmo nas vers\u00f5es mais recentes do Delphi.<\/p>\n<p>Ainda assim, h\u00e1 algumas observa\u00e7\u00f5es a serem feitas sobre esse elogio. Infelizmente, vemos que tamb\u00e9m h\u00e1 muitos aplicativos que ainda est\u00e3o sendo desenvolvidos em vers\u00f5es antigas do Delphi. Isso \u00e9 uma pena, pois as novas vers\u00f5es do Delphi realmente t\u00eam muitas vantagens. Al\u00e9m de o IDE ser muito mais agrad\u00e1vel de usar, os novos aprimoramentos da linguagem s\u00e3o uma verdadeira melhoria.<\/p>\n<p>H\u00e1 uma s\u00e9rie de problemas recorrentes ao converter aplicativos Delphi antigos para a vers\u00e3o mais recente do Delphi. Por exemplo, a partir do Delphi 2009, \u00e9 necess\u00e1rio levar em conta o Unicode. Al\u00e9m disso, pode haver componentes que n\u00e3o est\u00e3o mais sendo desenvolvidos ou que foram significativamente modificados. Isso significa que ainda h\u00e1 empresas que trabalham com Delphi 5, Delphi 7 ou outras vers\u00f5es antigas. Agora, converter seu c\u00f3digo-fonte nem sempre \u00e9 f\u00e1cil. Na GDK Software, tivemos muitos projetos e clientes que nos procuraram com softwares Delphi mais antigos. Como frequentemente nos deparamos com os mesmos problemas, desenvolvemos uma ferramenta que facilita muito a convers\u00e3o: a ferramenta GDK Duster (Delphi Upgrade and Support). Neste post, explicarei brevemente como o GDK Duster nos ajuda com os projetos de convers\u00e3o e como a GDK Software tamb\u00e9m pode ajud\u00e1-lo com a atualiza\u00e7\u00e3o do seu projeto Delphi.<\/p>\n<h2>GDK Duster<\/h2>\n<p><img decoding=\"async\" class=\"img-fluid aligncenter wp-image-2319 size-full\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1.png\" alt=\"\" width=\"1312\" height=\"819\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1.png 1312w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1-300x187.png 300w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1-768x479.png 768w\" sizes=\"(max-width: 1312px) 100vw, 1312px\" \/><\/p>\n<p>O GDK Duster usa o compilador Delphi para compilar programas automaticamente, procurar erros e modificar o c\u00f3digo para corrigir esses erros. Como todas as altera\u00e7\u00f5es s\u00e3o realizadas por meio de a\u00e7\u00f5es, voc\u00ea pode simplesmente pegar a base de c\u00f3digo mais recente e reiniciar a convers\u00e3o todas as vezes. Durante o desenvolvimento do Duster, sempre tivemos em mente automatizar a convers\u00e3o o m\u00e1ximo poss\u00edvel.<\/p>\n<p>Come\u00e7arei com uma breve introdu\u00e7\u00e3o \u00e0 mec\u00e2nica do Duster. Depois disso, darei alguns exemplos das diferentes a\u00e7\u00f5es que a ferramenta pode executar.<\/p>\n<h3>Pr\u00e9-compila\u00e7\u00e3o<\/h3>\n<p>Executamos v\u00e1rias etapas automaticamente antes de iniciar o processo de compila\u00e7\u00e3o. Primeiro, realizamos uma a\u00e7\u00e3o de pr\u00e9-compila\u00e7\u00e3o em todo o c\u00f3digo-fonte. Isso consiste nas seguintes a\u00e7\u00f5es:<\/p>\n<ol>\n<li>Converta todos os arquivos de formul\u00e1rio (arquivos .dfm) em arquivos de texto<\/li>\n<li>Executar todas as a\u00e7\u00f5es de pr\u00e9-processamento definidas<\/li>\n<\/ol>\n<p>Para come\u00e7ar com o primeiro ponto: com o Delphi, \u00e9 poss\u00edvel salvar arquivos de formul\u00e1rio como arquivos bin\u00e1rios. Como \u00e9 poss\u00edvel substituir componentes pelo Duster, os arquivos de formul\u00e1rio devem ser salvos como arquivos de texto leg\u00edveis.<\/p>\n<p>Em seguida, executamos todas as a\u00e7\u00f5es de pr\u00e9-processamento. Suponhamos que saibamos que em cada arquivo pascal certas modifica\u00e7\u00f5es precisam ser feitas; podemos especific\u00e1-las na lista de a\u00e7\u00f5es. O Duster primeiro executar\u00e1 essas a\u00e7\u00f5es em todo o c\u00f3digo-fonte, antes de iniciar a compila\u00e7\u00e3o propriamente dita.<\/p>\n<h3>Compila\u00e7\u00e3o<\/h3>\n<p>Em seguida, usamos a ferramenta para compilar o projeto e corrigir erros.<\/p>\n<p>Com a finalidade de corrigir erros, avisos e dicas, criamos um banco de dados de a\u00e7\u00f5es que o auxiliar de compila\u00e7\u00e3o usa para realizar automaticamente altera\u00e7\u00f5es no c\u00f3digo e recompilar o c\u00f3digo-fonte. Uma a\u00e7\u00e3o pode consistir em:<\/p>\n<ul>\n<li>Adicionar uma unidade aos usos<\/li>\n<li>Remover ou renomear unidades<\/li>\n<li>Modificar o c\u00f3digo usando uma substitui\u00e7\u00e3o simples<\/li>\n<li>Modificar o c\u00f3digo usando express\u00f5es regulares<\/li>\n<li>Adicionar um prefixo a um identificador ou vari\u00e1vel<\/li>\n<li>Alterar o tipo de uma vari\u00e1vel<\/li>\n<li>Substituir um componente (tempo de design)<\/li>\n<li>Substituir todo o c\u00f3digo executando uma substitui\u00e7\u00e3o ou express\u00f5es regulares no arquivo pascal.<\/li>\n<\/ul>\n<h3>Exemplos de a\u00e7\u00f5es<\/h3>\n<p>Como realizamos muitas convers\u00f5es no software GDK, compilamos uma lista bastante extensa dessas a\u00e7\u00f5es. Com o Duster, podemos adicionar e editar facilmente essas a\u00e7\u00f5es:<\/p>\n<p><img decoding=\"async\" class=\"img-fluid wp-image-2321 aligncenter\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Screenshot_84.png\" alt=\"\" width=\"1283\" height=\"802\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Screenshot_84.png 1311w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Screenshot_84-300x187.png 300w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Screenshot_84-768x480.png 768w\" sizes=\"(max-width: 1283px) 100vw, 1283px\" \/><\/p>\n<p>Alguns exemplos de erros do compilador e as a\u00e7\u00f5es correspondentes s\u00e3o:<\/p>\n<p><code class=\"\" data-line=\"\">error E2003: Undeclared identifier: &#039;CurrencyString&#039;<\/code><\/p>\n<p>A solu\u00e7\u00e3o \u00e9 a a\u00e7\u00e3o \u00a0<code class=\"\" data-line=\"\">AddPrefixToIdentifier<\/code> e o prefixo ou solu\u00e7\u00e3o \u00e9 \u00a0 <code class=\"\" data-line=\"\">FormatSetting.<\/code>. Aqui, a ferramenta atualiza automaticamente o c\u00f3digo para <code class=\"\" data-line=\"\">FormatSettings.CurrencyString<\/code>. O mesmo ocorre com os erros a seguir:<\/p>\n<p><code class=\"\" data-line=\"\">error E2003: Undeclared identifier: &#039;CurrencyFormat&#039;<br \/>\nerror E2003: Undeclared identifier: &#039;CurrencyDecimals&#039;<br \/>\nerror E2003: Undeclared identifier: &#039;DateSeparator&#039;<br \/>\nerror E2003: Undeclared identifier: &#039;TimeSeparator&#039;<br \/>\n[...enz]<\/code><\/p>\n<p>Outro exemplo:<\/p>\n<p><code class=\"\" data-line=\"\">error E2003: Undeclared identifier: &#039;VarArrayOf&#039;<\/code><\/p>\n<p>Nesse caso, uma unidade deve ser adicionada \u00e0 classe de usos. Isso \u00e9 feito usando a a\u00e7\u00e3o\u00a0\u00a0<code class=\"\" data-line=\"\">AddUnitToInterface<\/code> onde a unidade\u00a0 <code class=\"\" data-line=\"\">System.Variants<\/code> is added.<\/p>\n<p>Um exemplo de uma a\u00e7\u00e3o mais complexa \u00e9 a solu\u00e7\u00e3o do seguinte problema:<\/p>\n<p><code class=\"\" data-line=\"\">error E1050: WideChar reduced to byte char in set expressions. Consider using &#039;CharInSet&#039; function in &#039;SysUtils&#039; unit.<\/code><\/p>\n<p>Neste exemplo, identificamos os avisos do Delphi para serem exibidos como erros. A solu\u00e7\u00e3o para esse problema \u00e9 o\u00a0\u00a0<code class=\"\" data-line=\"\">ReplaceByRegEx<\/code> a\u00e7\u00e3o. Para uma a\u00e7\u00e3o de substitui\u00e7\u00e3o (tanto a a\u00e7\u00e3o regular quanto a a\u00e7\u00e3o de express\u00f5es regulares), precisamos especificar dois par\u00e2metros: a string de pesquisa e o resultado. Nesse caso espec\u00edfico, a string de pesquisa era uma fun\u00e7\u00e3o de Express\u00f5es Regulares bastante complexa<\/p>\n<p><code class=\"\" data-line=\"\">([\\w\\^]+[[]?[\\w\\+\\.\\-\\s]+[]]?)\\s+[Ii][Nn]\\s+([a-zA-Z0-9[\\s]*[Cc][Hh][Rr][(][\\d]+[)]*[a-zA-Z0-9&#039;?,\\s(\\]]*[Cc][Hh][Rr][(][\\d]+[)]*[]\\)]?)<\/code><\/p>\n<p>e o resultado<\/p>\n<p><code class=\"\" data-line=\"\">CharInSet(\\1, \\2)<\/code><\/p>\n<p>O Duster aplicar\u00e1 essa solu\u00e7\u00e3o \u00e0 linha espec\u00edfica de c\u00f3digo, ap\u00f3s o que o processo de compila\u00e7\u00e3o continuar\u00e1 com o restante do c\u00f3digo-fonte.<\/p>\n<h3>Adi\u00e7\u00e3o de a\u00e7\u00f5es<\/h3>\n<p>Ao trabalhar em uma convers\u00e3o, voc\u00ea obviamente deseja adicionar novas a\u00e7\u00f5es da forma mais f\u00e1cil poss\u00edvel. Embora o Duster possa resolver muitas coisas automaticamente, sempre h\u00e1 problemas espec\u00edficos que precisam ser resolvidos em um projeto. \u00c9 por isso que voc\u00ea pode adicionar facilmente suas pr\u00f3prias solu\u00e7\u00f5es e a\u00e7\u00f5es.<\/p>\n<p>Como ilustra\u00e7\u00e3o, mostrarei um exemplo de uma parte da convers\u00e3o da biblioteca de cole\u00e7\u00f5es de \u00e1udio MPEG (de c\u00f3digo aberto). Um dos projetos Delphi apresenta a seguinte mensagem de erro:<\/p>\n<p><code class=\"\" data-line=\"\">error E2003: Undeclared identifier: &#039;ReadLn&#039;<\/code><\/p>\n<p>A linha de c\u00f3digo correspondente \u00e9<\/p>\n<p><code class=\"\" data-line=\"\">Str := TCP.ReadLn;<\/code><\/p>\n<p>Ao analisar o c\u00f3digo-fonte, sei que a fun\u00e7\u00e3o ReadLn das bibliotecas Indy est\u00e1 agora na unidade TCP.IOHandler em vez de na unidade TCP. Portanto, precisamos da a\u00e7\u00e3o ReplaceIdentifier e substituir TCP. por TCP.IOHandler. Adicionar essa a\u00e7\u00e3o agora \u00e9 muito f\u00e1cil.<\/p>\n<p>A principal vantagem de modificar seu c\u00f3digo-fonte dessa forma \u00e9 que ele pode ser transferido. Se esse c\u00f3digo espec\u00edfico ocorrer novamente em outro lugar, o Duster aplicar\u00e1 automaticamente essa solu\u00e7\u00e3o nesse local e continuar\u00e1 compilando.<\/p>\n<p>Como voc\u00ea viu, \u00e9 incrivelmente f\u00e1cil atualizar os projetos Delphi existentes para a vers\u00e3o mais recente do Delphi com a ferramenta. Voc\u00ea tamb\u00e9m pode continuar o desenvolvimento existente para a vers\u00e3o antiga do software durante o projeto de convers\u00e3o. Como todas as altera\u00e7\u00f5es s\u00e3o armazenadas em a\u00e7\u00f5es, voc\u00ea pode simplesmente pegar a base de c\u00f3digo mais recente e reiniciar a convers\u00e3o todas as vezes.<\/p>\n<h3><strong>Como podemos ajudar<\/strong><\/h3>\n<p>Aa GDK Software, queremos compartilhar nosso conhecimento com outros desenvolvedores e ajudar as empresas a obter e manter seus <a href=\"https:\/\/gdksoftware.com\/services\/delphi-upgrades-and-updates\/\">Delphi software up to date<\/a>. Portanto, temos op\u00e7\u00f5es interessantes para usar o Duster tamb\u00e9m em seu projeto de software.<\/p>\n<p>Voc\u00ea tem interesse em uma demonstra\u00e7\u00e3o pessoal do Duster ou est\u00e1 procurando ajuda para converter um projeto Delphi? Entre em contato comigo viainfo@gdksoftware.com<\/p>\n<p><a class=\"btn btn-primary btn-icon\" href=\"https:\/\/calendly.com\/marcogeuze\/strategy-session\" target=\"\" rel=\"noopener\">ou planeje uma sess\u00e3o de estrat\u00e9gia on-line gratuita para ver o que \u00e9 poss\u00edvel!<\/a><\/p>\n","protected":false},"featured_media":0,"parent":0,"template":"","class_list":["post-4631","knowledge","type-knowledge","status-publish","hentry","knowledge-category-arquivo-delphi"],"acf":{"author":414,"type_hero":"compact","hero_image":1042,"hero_image_position":"","hero_title":"Atualizando o Delphi de forma inteligente","hero_content":"","hero_link":null,"hero_show_h1":true},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Atualiza\u00e7\u00e3o do software Delphi - GDK Software<\/title>\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\/upgrading-delphi-software-de-forma-inteligente\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Atualiza\u00e7\u00e3o do software Delphi\" \/>\n<meta property=\"og:description\" content=\"Este ano (2020), a Delphi comemora seu 25\u00ba anivers\u00e1rio.Nesses 25 anos, uma enorme quantidade de c\u00f3digo foi escrita. Muitos desses aplicativos ainda est\u00e3o em pleno uso por empresas e indiv\u00edduos. Isso mostra o poder do Delphi; o c\u00f3digo escrito h\u00e1 d\u00e9cadas ainda funciona, mesmo nas vers\u00f5es mais recentes do Delphi. Ainda assim, h\u00e1 algumas observa\u00e7\u00f5es [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente\" \/>\n<meta property=\"og:site_name\" content=\"GDK Software\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-11T18:49:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1.png\" \/>\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=\"7 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\\\/upgrading-delphi-software-de-forma-inteligente\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/upgrading-delphi-software-de-forma-inteligente\",\"name\":\"Atualiza\u00e7\u00e3o do software Delphi - GDK Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/upgrading-delphi-software-de-forma-inteligente#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/upgrading-delphi-software-de-forma-inteligente#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/Duster1.png\",\"datePublished\":\"2020-07-23T11:47:16+00:00\",\"dateModified\":\"2023-07-11T18:49:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/upgrading-delphi-software-de-forma-inteligente#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/upgrading-delphi-software-de-forma-inteligente\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/upgrading-delphi-software-de-forma-inteligente#primaryimage\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/Duster1.png\",\"contentUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/Duster1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/upgrading-delphi-software-de-forma-inteligente#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\":\"Atualiza\u00e7\u00e3o do software 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":"Atualiza\u00e7\u00e3o do software Delphi - GDK Software","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\/upgrading-delphi-software-de-forma-inteligente","og_locale":"pt_BR","og_type":"article","og_title":"Atualiza\u00e7\u00e3o do software Delphi","og_description":"Este ano (2020), a Delphi comemora seu 25\u00ba anivers\u00e1rio.Nesses 25 anos, uma enorme quantidade de c\u00f3digo foi escrita. Muitos desses aplicativos ainda est\u00e3o em pleno uso por empresas e indiv\u00edduos. Isso mostra o poder do Delphi; o c\u00f3digo escrito h\u00e1 d\u00e9cadas ainda funciona, mesmo nas vers\u00f5es mais recentes do Delphi. Ainda assim, h\u00e1 algumas observa\u00e7\u00f5es [&hellip;]","og_url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente","og_site_name":"GDK Software","article_modified_time":"2023-07-11T18:49:56+00:00","og_image":[{"url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente","url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente","name":"Atualiza\u00e7\u00e3o do software Delphi - GDK Software","isPartOf":{"@id":"https:\/\/gdksoftware.com\/pt-br#website"},"primaryImageOfPage":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente#primaryimage"},"image":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente#primaryimage"},"thumbnailUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1.png","datePublished":"2020-07-23T11:47:16+00:00","dateModified":"2023-07-11T18:49:56+00:00","breadcrumb":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente#primaryimage","url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1.png","contentUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2020\/07\/Duster1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/upgrading-delphi-software-de-forma-inteligente#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":"Atualiza\u00e7\u00e3o do software 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\/4631","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\/414"}],"wp:attachment":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/media?parent=4631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}