Usando o modelo de objeto de documento XML. Guia da Internet - Tudo o mais interessante online como criar um arquivo XML Delphi

A linguagem XML é cada vez mais usada para armazenar informações, compartilhando-a entre aplicativos e nós da Web. Em muitos aplicativos, esta linguagem é usada como armazenamento básico de dados em outros - para exportar e importar dados XML. Segue-se a partir disso que é hora de os desenvolvedores pensarem sobre como usar dados XML em seus próprios aplicativos.

Neste artigo, vamos considerar o modelo de objeto do documento XML (DOM) e sua implementação pela Microsoft - Microsoft XML DOM.

O XML DOM é um modelo de objeto que fornece aos objetos do desenvolvedor para baixar e processar arquivos XML. O modelo de objeto consiste nos seguintes objetos principais: xmldomdocument, xmldomnodelist, xmldomnode, xmldomnamednodemap e xmldomparseError. Cada um desses objetos (exceto xmldparsarseError) contém propriedades e métodos para obter informações sobre o objeto, manipular os valores e estrutura do objeto, além de mover ao longo da estrutura do documento XML.

Considere os principais objetos de XML DOM e dê vários exemplos de seu uso em Borland Delphi.

Usando XML DOM em Borland Delphi

Para usar o Microsoft XML DOM em aplicativos Delphi, você deve conectar a biblioteca de tipo apropriada ao projeto. Para fazer isso, execuamos o projeto | Biblioteca de tipos de importação e no painel de diálogo de biblioteca de tipo de importação, selecione a biblioteca Microsoft XML versão 2.0 (versão 2.0), que geralmente está localizada no arquivo Windows \\ System \\ Msxml.dll

Depois de pressionar o botão Criar unidade, o módulo de interface MSXML_TLB será criado, o que nos permitirá usar os objetos XML DOM: DomDocument, XMLDocument, XmlhttPrequest e vários outros implementados na biblioteca MSXML.DLL. O link para o módulo MSXML_TLB deve ser listado na lista de usos.

Xml Dom Device.

O modelo de objeto de documento representa um documento XML na forma de uma estrutura de árvore que consiste em ramos. As interfaces de software XML DOM permitem que os aplicativos naveguem na árvore do documento e manipulem seus ramos. Cada ramo pode ter um tipo específico (domnodetipo), segundo o qual os pais e subsidiárias são determinados. Na maioria dos documentos XML, você pode encontrar ramos do elemento, atributo e ramos de texto. Atributos (atributo) são um tipo especial de ramificação e não são filiais subsidiárias. Usos de gerenciamento de atributo. métodos especiaisfornecido por objetos XML DOM.

Além de implementar as interfaces World World Wide Web Consórcio (W3C), o Microsoft XML DOM contém métodos que suportam XSL, padrões XSL, namespaces e tipos de dados. Por exemplo, o método selectnodes permite que você use a sintaxe dos modelos XSL (sintaxe do padrão XSL) para pesquisar por filiais em um contexto específico, e o método Transformnode suporta o uso do XSL para executar transformações.

Teste o documento XML.

Como exemplo de um documento XML, pegue o catálogo de CD-ROM de música, que tem a seguinte estrutura:

Empire Burlesque. Bob Dylan. EUA. Columbia. 10.90 1985 Esconda seu coração. Bonnie Tylor. Reino Unido. Registros da CBS. 9.90 1988 ... Liberte meu coração. Joe Cocker. EUA. Emi. 8.20 1987

Agora estamos prontos para começar a considerar o modelo de objeto XML DOM, familiaridade com o qual começará com o objeto XMLDOMDocument.

Documento XML - objeto XMLDOMDocument

Trabalhar com o documento XML começa com o seu download. Para fazer isso, usamos o método de carga que possui apenas um parâmetro indicando o URL do documento baixado. Ao baixar arquivos de um disco local, apenas o nome do arquivo completo é especificado (arquivo: /// Protocol neste caso pode ser omitido). Se o documento XML for armazenado como uma string, o método LoadXML deve ser usado para baixar esse documento.

Para controlar o método de baixar um documento (síncrono ou assíncrono), a propriedade Async é usada. Por padrão, esta propriedade é verdadeira, indicando que o documento é carregado de forma assíncrona e o controle é retornado ao aplicativo mesmo até que o documento esteja totalmente carregado. Caso contrário, o documento é carregado de forma síncrona e, em seguida, você deve verificar o valor da propriedade ReadyState para descobrir, o documento carregado ou não. Você também pode criar um manipulador de eventos OneReadyStateChange que receberá controle ao alterar o valor da propriedade ReadyState.

Abaixo é mostrado como baixar um documento XML usando o método de carga:

Usuários ... MSXML_TLB ... Procedimento TForm1.Button1Click (remetente: Togject); Var xmldoc: ixmldomdocument; Comece XMLDOC: \u003d coodomdocument.create; Xmldoc.async: \u003d falso; Xmldoc.load ('c: \\ data \\ data.xml'); // // Aqui está o código que manipula // documento XML e suas filiais // xmldoc: \u003d nil; fim;

Depois que o documento é carregado, podemos nos referir às suas propriedades. Assim, a propriedade Nodename conterá o valor #Document, a propriedade NodetyPestring é um valor de documento, a propriedade URL é o valor: /// c: /data/data.xml.

O processamento é erro

De particular interesse são as propriedades associadas ao processamento do documento quando é carregado. Assim, a propriedade ParseError retorna um objeto xmldomparseerror contendo informações de erro que ocorreram durante o processo de processamento.

Para escrever um manipulador de erros, você pode adicionar o seguinte código:

Var xmlerror: ixmldomparseError; xmldoc.load ('c: \\ data \\ data.xml'); Xmlerror: \u003d xmldoc.parseError; Se xmlerror.errorcode.<> 0 então // // aqui nós processamos o erro // else memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nil;

Para descobrir quais informações são retornadas em caso de erro, altere o item de diretório a seguir:

Empire Burlesque. Bob Dylan. EUA. Columbia. 10.90 1985

removendo o elemento de fechamento Na segunda linha:</p><p> <CD> <TITLE>Empire Burlesque. <ARTIST>Bob Dylan.</ARTIST> <COUNTRY>EUA.</COUNTRY> <COMPANY>Columbia.</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </p><p>Agora escreva o código que retorna as propriedades do objeto XmldomparseError:</p><p>Xmlerror: \u003d xmldoc.parseError; Se xmlerror.errorcode.<> 0 Então com XMLError, Memo1.Lines de iniciar Adicionar ('arquivo:' + URL); Adicionar ('Código:' + inttostr (errorcode)); Adicionar ('Erro:' + Razo); Adicionar ('texto:' + srctext); Adicionar ("linha: '+ inttostr (linha)); Adicionar ('posição:' + inttostr (linepos)); Final else memo1.lines.add (xmldoc.xml); Fim;</p><p>e cumprir nosso pedido. Como resultado, obtemos as seguintes informações de erro.</p> <p>Como pode ser visto no exemplo acima, as informações retornadas pelo objeto XMLDemparseError é suficiente para localizar o erro e entender o motivo de sua ocorrência.</p> <p>Agora restaure o elemento de fechamento <TITLE> Em nosso documento e continue a discussão do XML DOM.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Acesso à árvore do documento</h2> <p>Para acessar a árvore do documento, você pode obter o elemento raiz e, em seguida, passar por suas subsidiárias ou encontrar algum ramo específico. No primeiro caso, recebemos o elemento raiz através da propriedade DocumentElement, que retorna um objeto do tipo XMLDOMnode. Abaixo é mostrado como usar a propriedade DocumentElement, a fim de obter o conteúdo de cada elemento filho:</p><p>VaR nó: ixmldomnode; Root: ixmldomelement; I: inteiro; ... raiz: \u003d xmldoc.documentelement; Para i: \u003d 0 a root.childnodes.length-1 Do início do nó: \u003d root.childnodes.item [i]; Memo1.lines.add (node.text); Fim;</p><p>Para o nosso documento XML, recebemos o seguinte texto.</p> <p>Se estivermos interessados \u200b\u200bem algum tipo de ramificação ou nível de ramificação específica abaixo da primeira subsidiária, podemos usar o método NODEFROMID ou o método GetElementByTagname do objeto XMLDOMDocument.</p> <p>O método NODEFROMID requer especificar um identificador exclusivo definido no esquema XML ou na definição do tipo de documento (DTD) e retorna um ramo com este identificador.</p> <p>O método GetElementByTagname requer uma indicação de uma string com um elemento específico (tag) e retorna todos os ramos com este item. Abaixo é mostrado como usar este método para encontrar todos os artistas em nosso diretório de CD-ROM:</p><p>Nós: ixmldomnodelist; Nó: ixmldomnode; ... nós: \u003d xmldoc.geteentsbytagname ('artista'); Para I: \u003d 0 a Nodes.Length-1 Do início do nó: \u003d nós.item [i]; Memo1.lines.add (node.text); Fim;</p><p>Para o nosso documento XML, receberemos o seguinte texto.</p> <p>Observe que o método xmldomnode selectnodes fornece uma maneira mais flexível de acessar os ramos do documento. Mas sobre isso é um pouco menor.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Ramo de documento - objeto xmldomnode</h2> <p>O objeto XMLDOMNODE é um ramo de documento. Nós já encontramos este objeto quando o elemento raiz do documento foi obtido:</p><p>Raiz: \u003d xmldoc.documentelement;</p><p>Para obter informações sobre o ramo do documento XML, você pode usar as propriedades do objeto XMLDOMnode (Tabela 1).</p> <p>Para acessar os dados armazenados na filial, geralmente use a propriedade NODEVALUE (disponível para atributos, ramificações de texto, comentários, instruções para processamento e seções do CDATA), ou a propriedade de texto que retorna o conteúdo de texto da filial ou a propriedade NodyPedValue. Este último, no entanto, só pode ser usado para galhos com elementos digitados.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Movendo-se na árvore do documento</h3> <p>O objeto XMLDOMnode fornece uma variedade de maneiras de se mover pela árvore do documento. Por exemplo, para acessar a filial pai, a propriedade ParentNode é usada, o acesso a filiais filho é realizado através das propriedades de filhos (XMLDChild Type), Firstchild e LastChild (digite xmldomnode), etc. A propriedade ProprilDocument retorna um objeto XMLDocument que identifica o próprio documento XML. As propriedades acima facilitam a movimentação da árvore do documento.</p> <p>Agora eu superarei todos os galhos do documento XML:</p><p>Raiz: \u003d xmldoc.documentelement; Para i: \u003d 0 a root.childnodes.length-1 Do início do nó: \u003d root.childnodes.item [i]; Se nó.haschildnodes então getchilds (nó, 0); Fim;</p><p>Como observado acima, o objeto SelectNodes XMLDOmnode fornece uma maneira mais flexível de acessar os ramos do documento. Além disso, há um método selectsinglende que retorna apenas a primeira ramificação do documento. Ambos os métodos permitem que você especifique modelos XSL para procurar por filiais.</p> <p>Considere o processo de usar o método selectnodes para extrair todos os ramos que possuem um ramo de CD e inflação.</p><p>Raiz: \u003d xmldoc.documentelement; Nós: \u003d raiz.selectnodes ('CD / Preço');</p><p>A coleção de nós será colocada todos os ramos de CD de preços de Switter. A discussão dos modelos XSL retornará um pouco mais tarde.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Manipulação por filiais filiais</h3> <p>Para manipulação de subsidiárias, podemos usar os métodos do objeto XMLDOMNODE (Tabela 2).</p> <p>Para excluir completamente o registro do primeiro disco, você precisa executar o seguinte código:</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Nó: ixmldomnode; Xmldoc: \u003d coodomdocument.create; Xmldoc.async: \u003d falso; Xmldoc.load ('c: \\ data \\ data.xml'); // Obtenha a raiz do elemento raiz: \u003d xmldoc.documentelement; Nó: \u003d raiz; // Remove a primeira subsidiária nó.Removechild (Node.Firstchild);</p><p>Por favor, note que neste exemplo, removemos a primeira subsidiária. Como remover o primeiro elemento da primeira subsidiária, é mostrado abaixo:</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Nó: ixmldomnode; Xmldoc: \u003d coodomdocument.create; Xmldoc.async: \u003d falso; Xmldoc.load ('c: \\ data \\ data.xml'); // Obtenha a raiz do elemento raiz: \u003d xmldoc.documentelement; // e o primeiro nó subsidiário: \u003d raiz.firstchild; // Remove a primeira subsidiária nó.Removechild (Node.Firstchild);</p><p>No exemplo acima, não removemos o primeiro ramo. <CD>…</CD>e o primeiro elemento do ramo - <TITLE>….

Agora adicione um novo ramo. Abaixo está um código mostrando como adicionar um novo registro de CD-ROM de música:

Var neonde: ixmldomnode; Criança: ixmldomnode; ... // criar um novo ramo - NewNode: \u003d xmldoc.createode (1, 'CD', ''); // Adicionar elemento. Criança: \u003d xmldoc.createode (1, 'título', ''); // Adicionar um elemento NewNode.AppendChild (criança); // e definir seu valor da criança.Text: \u003d 'floyd rosa'; // Adicionar elemento. <ARTIST> Criança: \u003d xmldoc.createode (1, «artista», '); // Adicionar um elemento NewNode.AppendChild (criança); // e estabelecer seu valor de criança. Text: \u003d 'Division Bell'; // Adicionar elemento. <COUNTRY> Criança: \u003d xmldoc.createode (1, 'país', ''); // Adicionar um elemento NewNode.AppendChild (criança); // e definir seu valor da criança.Text: \u003d 'Reino Unido'; // Adicionar elemento. <COMPANY> Criança: \u003d xmldoc.createode (1, 'empresa', ''); // Adicionar um elemento NewNode.AppendChild (criança); // e definir seu valor criança.Text: \u003d 'EMI Records Ltd.'; // Adicionar elemento. <PRICE>Criança: \u003d xmldoc.createode (1, 'Preço', ''); // Adicionar um elemento NewNode.AppendChild (criança); // e estabelecer seu valor da criança.Text: \u003d '11 .99 "; // Adicionar um elemento <YEAR> Criança: \u003d xmldoc.createode (1, 'ano', ''); // Adicionar um elemento NewNode.AppendChild (criança); // e estabelecer seu valor da criança. Text: \u003d '1994'; // e adicione o ramo raiz.apendchild (neonde); ...</p><p>O código acima mostra a seguinte seqüência de ações para adicionar uma nova filial:</p> <ul><li>Criando uma nova filial usando o Createnodo: <ul><li>criando um item usando o método createnode;</li> <li>adicionando um elemento à filial pelo método ApêndChild;</li> <li>definindo o valor do elemento através da propriedade de texto;</li> <li>... Repita para todos os itens.</li> </ul></li> <li>Adicionando uma nova filial ao documento pelo AppendChild.</li> </ul><p>Lembre-se de que o método AppendChild adiciona uma filial no final de uma árvore. Para adicionar um ramo a um local específico da árvore, você precisa usar o método InsertBefore.</p> <h2> Conjunto de ramos - objeto xmldomnodelist</h2> <p>O objeto XmlNodelist contém uma lista de ramos que podem ser construídos usando os métodos selectnodes ou getElementsbytagname e também são obtidos na propriedade ChildNodes.</p> <p>Já consideramos o uso desse objeto no exemplo dado na seção "Movendo-se na árvore do documento". Aqui também damos alguns comentários teóricos.</p> <p>O número de filiais na lista pode ser obtido como o valor da propriedade de comprimento. Os ramos têm índices de 0 a comprimento-1, e cada ramificação individual está disponível através de um elemento de matriz de item com o índice correspondente.</p> <p>Mover-se na lista de ramos também pode ser realizado usando o método NextNode retornando a próxima filial na lista ou nil, se o ramo atual for este último. Para retornar ao topo da lista, você deve ligar para o método de redefinição.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Criando e salvando documentos</h2> <p>Então, analisamos como você pode adicionar filiais e elementos aos documentos XML existentes. Agora crie um documento XML "na mosca". Primeiro de tudo, vamos lembrá-lo de que o documento pode ser carregado não apenas a partir do URL, mas também da string usual. Abaixo é mostrado como criar um elemento raiz, que pode ser usado para criar dinamicamente os elementos restantes (que já consideramos na seção "Manipulação de subsidiárias"):</p><p>Var xmldoc: ixmldomdocument; Root: ixmldomnode; Nó: ixmldomnode; S: Widestring; ... s: \u003d ' <CATALOG></CATALOG>'; Xmldoc: \u003d coodomdocument.create; Xmldoc.async: \u003d falso; Xmldoc.loadxml (s); Raiz: \u003d xmldoc.documentelement; Nó: \u003d xmldoc.createode (1, 'CD', ''); Raiz.apendchild (nó); Memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nil;</p><p>Depois de construir um documento XML, salve-o no arquivo usando o método Salvar. Por exemplo:</p> <p>Xmldoc.save ('C: \\ Data \\ newcd.xml');</p> <p>Além de economizar no arquivo, o método Salvar permite salvar um documento XML em um novo objeto XMLDOMDocument. Nesse caso, o documento é pleno processamento e, como resultado, verificando sua estrutura e sintaxe. Abaixo é mostrado como salvar um documento em outro objeto:</p><p>Procedimento torm1.button2click (remetente: Togject); Var xmldoc2: ixmldomdocument; Começar xmldoc2: \u003d codomdocument.create; Xmldoc.save (xmldoc2); Memo2.lines.add (xmldoc2.xml); ... xmldoc2: \u003d nil; fim;</p><p>Em conclusão, observamos que o método Salvar também permite salvar um documento XML para outros objetos COM que suportam as interfaces Istream, ISetStream ou IPescistSreamInit.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Usando modelos xsl.</h2> <p>Discutindo o método de selectnodes do objeto XMLDOMNODE, mencionamos que ele fornece uma maneira mais flexível de acessar os ramos do documento. A flexibilidade reside no fato de que como um critério para selecionar ramos, você pode especificar um modelo XSL. Tais modelos fornecem um poderoso mecanismo para pesquisar informações em documentos XML. Por exemplo, para obter uma lista de todos os nomes de CD-ROM de música em nosso diretório, você pode seguir a seguinte consulta:</p><p>Para descobrir se os discos dos quais os artistas são lançados nos Estados Unidos, a solicitação é formada da seguinte forma:</p><p>Nós: \u003d raiz.selectnodes ('CD / Artist');</p><p>Abaixo é mostrado como encontrar o primeiro disco no diretório:</p><p>Nós: \u003d raiz.selectnodes ('CD / Título');</p><p>e por ultimo:</p><p>Nós: \u003d raiz.selectnodes ('CD / Título');</p><p>Para encontrar os discos de Bob Dilan, você pode executar a seguinte consulta:</p><p>Nós: \u003d raiz.selectNodes ('CD [qualquer $ ARST \u003d "BOB Dylan"] / título');</p><p>e para obter uma lista de discos liberados após 1985, realizamos a seguinte consulta:</p><p>Nós: \u003d raiz.selectnodes ('CD / Título');</p><p>Uma discussão mais detalhada da sintaxe XSL requer uma publicação separada. Para os leitores intrigas e empurrar mais pesquisas, darei apenas um pequeno exemplo do possível uso do XSL. Suponha que precisemos converter nosso diretório para a tabela HTML usual. Aproveitando as maneiras tradicionais, devemos resolver todos os galhos de árvores e para cada item obtido para formar as tags correspondentes <TD>…</TD>.</p> <p>Usando o XSL, simplesmente criamos um modelo (ou tabela de estilo), na qual indicamos o que e como converter. Em seguida, impamos este modelo ao nosso catálogo - e pronto: Antes de nós, o texto do modelo XSL, que converte o diretório na tabela (Listagem 2).</p> <p>O código para sobrepor o modelo XSL para o nosso catálogo se parece com isso:</p><p>Procedimento torm1.button2click (remetente: Togject); Var xsldoc: ixmldomdocument; Iniciar XSLDOC: \u003d coodomdocument.create; Xsldoc.load ('c: \\ data \\ data.xsl'); Memo2.text: \u003d xmldoc.transformNode (XSLDOC); Xsldoc: \u003d nil; fim;</p><p>Ao completar nossa discussão sobre XSL, deve-se dizer que atualmente essa linguagem é usada ativamente para transformação entre diferentes documentos XML, bem como para formatar documentos.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Conclusão</h2> <p>Por razões bastante compreensíveis, em um artigo, é impossível considerar todos os objetos do Microsoft XML Dom e trazer exemplos de seu uso. Aqui só tocamos nas principais questões de usar o XML DOM em aplicativos. Na guia. 3 mostra todos os objetos implementados no Microsoft XML DOM.</p> <p>Computador 12 "2000</p> <p>Ordem Resolvendo tarefas no Delphi <br> O Delphi é a segunda linguagem de programação com a qual os alunos geralmente se familiarizam no processo de aprendizagem. Este é o começo da programação orientada a objetos de aprendizagem. Eu, como estudante, feita para mim a conclusão de que não há método mais fácil para dominar a linguagem do que escrever uma calculadora nela. Mesmo se você perceber a função elementar da adição de dois números, isso já está em muita luz.</p> <p>CodeGaear, Delphi 7, Lazarus é diferentes compiladores, programas que serão transferidos para o código da máquina escrito por você, convertendo-o em Zoliki e um. Estes são todos programas para criar programas e não separam linguagens de programação. Esses compiladores usam o idioma de programação do objeto Pascal subjacente à linguagem Delphi, que é semelhante à sintaxe semelhante ao Pascal habitual, mas é funcional significativamente diferente. <br></p> <h2>O que é a sintaxe de linguagem de programação?</h2> <p>Este é um formato para escrever vários operadores. Por exemplo, o ciclo "para" no Pascal tem o seguinte formato: "para N: \u003d 1 a k do", etc.</p><p>Na linguagem de programação C ++, o mesmo ciclo é escrito um pouco diferente: para (n \u003d 1; n escrevemos uma calculadora</p><p>Isso lhe dará para entender como os objetos com o código do programa estão interagindo, quais são as "variáveis", como funcionam as funções matemáticas. Toda a programação em qualquer caso será um cálculo. O jogo também é um programa que constantemente considera algo, trabalha com números e funções numéricas. A programação é inseparável da matemática.</p> <p>Nós usamos para escrever o ambiente de desenvolvimento do Lazarus. Sua funcionalidade não é tão rica quanto, digamos, codegear, mas é livre de acesso e é projetado para estudar.</p><p>Abrindo o ambiente de desenvolvimento, vemos a forma e o painel dos elementos. Aqui está um formulário.</p> <p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-24.jpg' width="100%" loading=lazy loading=lazy></p><p>Aqui está o painel de elemento.</p><p>A primeira coisa que vamos fazer é adicionar os três itens que você precisa para implementar a função de adição de dois números. Precisamos: "Tedit" no número de três peças e "tbutton". Na foto abaixo, eles são mostrados no painel de setas. Clique neles uma vez e, em seguida, uma vez em forma, e eles aparecem nele.</p><p>Estes são campos de texto para entrada e um botão regular. Você encontra esses elementos usando quase todos os programas do Windows. Dê uma olhada.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-27.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>Agora limpe essas inscrições. Clique na guia Exibir. E clique no "Inspetor de Objetos. Esta janela aparecerá.</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-28.jpg' width="100%" loading=lazy loading=lazy></p><p>Clique em uma vez no nosso elemento "botão" no formulário e altere o valor "legenda" na janela do inspetor para qualquer outra. Por exemplo, na palavra "ok". Clique em Enter. Nós vemos no formulário, já que o elemento mudou o nome.</p><p>Basta fazer com edição, apenas não renomear, mas vamos fazê-los sem qualquer conteúdo. Nós os destacamos por sua vez e limpo o valor de texto no inspetor. Não se esqueça de pressionar Enter.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-29.jpg' width="100%" loading=lazy loading=lazy></p><p>De acordo com o resultado, nossa forma se parece com isso.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-30.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>Agora que nossa calculadora ganha, você precisa registrar o código de software necessário para o procedimento do nosso botão. Clique no elemento Button duas vezes e abra o editor de origem.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-31.jpg' width="100%" loading=lazy loading=lazy></p><p>Ver? Botão1Clique o procedimento. Este é um procedimento responsável pelo que acontece quando clicamos no botão uma vez. E ocorrerá o seguinte: O programa é necessário na terceira edição para nos trazer a soma dos números introduzidos nos dois primeiros campos. Nós escrevemos o código.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-32.jpg' width="100%" loading=lazy loading=lazy></p><p>Tais linhas simples de código que precisamos escrever. Comentários e explicações são visíveis na imagem acima. Depois disso, clique neste botão.</p> <p>Uma compilação do nosso projeto será compilada. Será montado no programa. Entramos nos números nos dois primeiros campos, clique no botão e receba o valor do valor.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-34-2.jpg' width="100%" loading=lazy loading=lazy></p> <h2>Conclusão</h2> <p>Você pode clicar no botão "Arquivo", depois "Salvar tudo", selecione a pasta para salvar e você terá um programa de pleno direito, o início do que pode ser feito a partir do desktop. Agora tente descobrir por conta própria que você precisa reescrever neste código para que o programa seja dividido por dois números e não dobrado. Dica: você precisa alterar o tipo de dados. O vídeo abaixo mostra um exemplo semelhante, mas no Delphi 7, não Lazarus.</p><p><span class="6qR5tjJKK3g"></span></p> <p>Muitos programadores Delphi, configurações de poupança estão associados usando <i>Ini.</i> Arquivos em seus programas. O uso desse método, em projetos menos sérios, é necessário evitar, à medida que limita a flexibilidade, o que impede a expansão adicional do programa. Vale a pena dizer que tal abordagem é bastante popular, devido à sua facilidade de uso e à presença de fundos integrados no ambiente de desenvolvimento. <br><br> No entanto, a opção ideal para armazenar as configurações do programa são estruturadas <i>Xml.</i> Arquivos. Sua vantagem é que o número de parâmetros não pode ser corrigido. Para entender melhor isso, considere um exemplo específico.</p><p>No programa USearch, quando você clica na gravação, aparece um menu de contexto, que exibe a lista de pontos. Esses itens são comandos que, por sua vez, são baixados do arquivo de configurações. No caso de as configurações serem armazenadas em <i>Ini.</i> O arquivo, o programa pode salvar e carregar um determinado número de comandos, por exemplo 10 ou 50. Assim que precisará mais importante, você precisará reescrever o código e, em conformidade, redimensionado.</p><p><img src='https://i1.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.ini_.jpg' height="145" width="247" loading=lazy loading=lazy><br> Aplicando uma abordagem usando <i>Xml.</i> Arquivos, teremos a capacidade de baixar todos os parâmetros da seção dinamicamente. Para tudo isso, o arquivo de configuração se tornará mais elegante, sem numeração excessiva de parâmetros. No entanto, ferramentas padrão para trabalhar com <i>Xml.</i> Delphi tem muitas desvantagens, então eu recomendo usar a biblioteca padrão <b>Msxml.</b>. Normalmente, é a parte padrão dos sistemas da família do Windows.</p><p><img src='https://i2.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.xml_.jpg' align="center" width="100%" loading=lazy loading=lazy><br> Para conectar <b>Msxml.</b>Precisamos formar um arquivo de interface com uma lista de todas as funções, importando-a do servidor COM. Como importar a interface é por escrito Não há artigos detalhados suficientes, sugiro que você faça o download do arquivo <b>Msxml2_tlb.pas.</b> Já pronto para usar. Depois que o arquivo for baixado, coloque-o ao lado do seu projeto ou jogue para a pasta Delphi Lib lib. Assim, todos os programas criados serão capazes de usar o módulo. <b>Msxml.</b>, Basta adicionar MSXML2_TLB aos usos.</p><p>Para clareza, considere o exemplo a seguir da aplicação desta biblioteca:</p><p>Procedimento loaddata; Var xmldoc: domdocumento; Root: ixmldomelement; Comece XMLDOC: \u003d coodomdocument.create; Xmldoc.load ("settins.xml"); Raiz: \u003d xmldoc.documentelement; Showmessage ("tamanho / largura"). Texto); Raiz: \u003d nil; Xmldoc: \u003d nil; fim;</p><p>Primeiro, uma instância da classe DomDocument é criada, após o qual o conteúdo do arquivo Settings.xml é carregado na memória. Como de acordo com o padrão qualquer <i>Xml.</i> O arquivo deve conter a tag raiz (neste caso <i>config.</i>), então precisamos usá-lo usando a função <i>Documentelement.</i>. Em seguida, o conteúdo do conteúdo entre tags <width></width> que por sua vez são entre tags <size></size> . Assim, a partir do arquivo setting.xml, nosso método implantará o texto no MessageBox <i>"100px"</i>.</p><p> <?xml version="1.0" encoding="utf-8"?> <config> <size> <height>500px.</height> <width>100px.</width> </size> </config> </p><p>Aqui, o método SELECTSINGLENDE é aplicado, o que leva a string como um parâmetro.</p> <p>Receber! Este blog é dedicado à Internet e computadores e, mais precisamente, eles foram dedicados a eles.</p> <p>Provavelmente, é imediatamente visto que muitos anos não apareceram no site por muitos anos. Sim, este é o destino da maioria dos blogs. Uma vez que este projeto fosse um compromisso ambicioso, e o autor, como em muitos outros que escreveram na época, eram planos de grande escala para se tornar um dos melhores blogueiros russos. Bem, se você olhar agora, então desses blogs que foram criados simultaneamente com os meus, a maioria já havia se dissolvido na eternidade. E eu triturei a falta do blog de tempo. Então sim, não é mais atualizado. Embora eu tenha ganho uma vez neste site na competição de blog de 2011.</p> <p>Eu até tive a ideia de remover tudo isso, mas depois revisei os materiais antigos e percebi que eles ainda poderiam ser úteis para os leitores. Sim, alguns artigos estão desatualizados (se eu tiver força suficiente, eles receberão as marcas apropriadas), mas o site, por exemplo, pode ser útil para iniciantes - aqui você pode ler sobre os conceitos básicos da Internet, aprender a personalizar o Internet, Windows ou até decidir ir para o Linux. Então olhe para os títulos e selecione o que é adequado para você.</p> <p>E, afinal, espero que seja mais do que apenas um blog, mas um guia real da Internet. O site pode ser encontrado no modo de diretório, onde todos os artigos disponíveis são estruturados por categorias. E quem sabe, talvez, novos artigos de qualidade começarão a aparecer aqui.</p> <p><i>Sander.</i></p> <p>Picodi.ru é um portal de desconto de cupons internacionais, um especialista polonês em poupança e compras baratas. Os pólos são considerados uma das nações mais econômicas do mundo, portanto, não é de surpreender que esse tipo de projeto tenha crescido a partir da startup polonesa Kodyrabatowe.pl. O que pode ser útil para este portal para um usuário ordinário da Internet na Rússia?</p> <p>Telefones modernos Android são mais do que telefones. Você é usado para o conjunto de programas instalados, para o histórico de suas chamadas e mensagens de texto, coleções de fotos e muito. Mas o tempo acontece, e o dispositivo totalmente organizado começa a desacelerar, bug ou simplesmente perde uma visualização apresentável por causa da lascoração no caso ou arranhões na tela. Há uma questão de escolher um novo telefone e mudando o telefone Android. E se a questão da escolha, agora iremos contornar a festa agora, então "movendo" para um novo telefone permanece um problema sério - eu absolutamente não quero iniciar todos os dados do zero. Aqui vamos falar sobre isso hoje.</p> <p>A maioria dos leitores deste blog, provavelmente, nunca enfrentou versões do controle de versão e não surgirá no futuro próximo. E desculpe. Esta invenção extremamente fácil de usar é amplamente utilizada pelos programadores, mas, na minha opinião, pode ser muito útil e para aqueles que trabalham ativamente com os textos. Mas, provavelmente, não há sistema de controle de versão agora, que seria fácil começar a usar para o "Office" (Microsoft Office) do trabalho. No entanto, acho que o material estabelecido no artigo pode ser interessante para todos os leitores.</p> <p>Se você pensou em como a sua TV ass busca filmes pela rede e acesse a Internet, este artigo é para você. Não, eu sei que algumas TVs têm a funcionalidade da TV inteligente, mas eu nunca vi funcionar bem. Aparentemente, portanto, o Google demonstrou recentemente um dispositivo completamente deslumbrante, terminou imediatamente com uma sensação. Estamos falando sobre o Media Streamer Chromecast (Chromkast), uma versão mais perfeita e acessível do jogador favorito do ano passado Nexus Q.</p> <p>Dongle Chromkast, cujas dimensões não excedem 2 polegadas, se conecta à porta HDMI da TV e permitem que você ganhe assistindo o conteúdo da Web de streaming. Para controlar o streamer, você pode usar qualquer dispositivo (tablet, PC, smartphone) com base na plataforma operacional iOS, Windows, Android ou Mac OS.</p> <p>Este artigo é dedicado ao dispositivo de memória do sistema Android, problemas que podem surgir devido à falta e como resolvê-los. Eu mesmo não tinha há muito tempo que meu telefone Android começou a emitir mensagens regularmente sobre uma escassez de memória ao tentar estabelecer um determinado aplicativo. O que era muito estranho para mim, apesar do fato de que, na descrição do mercado, deveria ter havido cerca de 16GB, e também aumentei esse volume usando um cartão de memória adicional. No entanto, o problema era, e eu tive que mexer completamente antes de encontrar a solução certa que não requer o recebimento de acesso raiz ou a recuperação completa do telefone para o estado da fábrica.</p> <p>Recentemente, muita atenção é paga para construir sistemas de e-business, ou como eles também são chamados - B2B (negócios para negócios). Dadas as recomendações sobre a construção de sistemas de streaming de câmbio de coordenação de tecnologias da Internet do corpo - WWW Consórcio: Ênfase é feita para as tecnologias XML e a construção de sistemas de troca de documentos XML.</p> <p>A vantagem do uso de XML em e-business é a alta eficiência dos sistemas B2B a baixos custos para sua criação devido a uma representação clara e visual de informações estruturadas, a capacidade de usar protocolos de rede modernos e criar sistemas de negócios em tempo real e criar sistemas de negócios em tempo real e</p> <p>A independência da apresentação de informações na forma de documentos XML permite que diferentes, participam do negócio eletrônico, para produzir independentes uns dos outros por.</p> <p>Em todos os sistemas, a troca é geralmente construída pelo mesmo esquema usando solicitações HTTP. O protocolo SSL é aplicado como o protocolo SSL (mas este é um tópico separado).</p> <p>Uma das possíveis opções para processamento de mensagens XML é construir componentes BIN / CGI (ISAPI) -NEWS ou COM (servidor) formando ou processando documentos XML.</p> <p>Por um lado, o aplicativo atua como um cliente, que no modo pós emite uma consulta HTTP, por outro lado, é um servidor da Web na lateral da qual o processamento de consulta e uma resposta são processados. A troca de informações usa documentos XML.</p> <p>Uma das opções de implementação mais eficaz é o uso de um analisador XML existente que suporta o modelo DOM. Esse analisador é um fornecimento distributivo de Win`98 ou parte integrante do IE 4.7 e acima (para vencer`95) e representa o servidor COM localizado na biblioteca MSXML.DLL.</p> <p>O modelo de objeto de componente (COM) é dados e métodos encapsulados em uma única essência e uma maneira de acessá-los através do sistema de interface. O Delphi é simplesmente acessível ao acesso às classes de objeto COM (várias classes podem ser incluídas em um servidor COM). O acesso a objetos é realizado inicializando a instância de classe através do sistema de interface. A descrição das interfaces é realizada pela linguagem de definição de interface (IDL), que é possível realizar os meios do meio automaticamente.</p> <p>Delphi significa importações do servidor COM <i>msxml.dll.</i>Os arquivos de descrição da interface IDL são construídos e o arquivo de descrição binário do tipo de biblioteca é TLB. Esta operação é realizada através do menu do sistema: <b>Projeto | Importação da biblioteca de tipos:</b>(Imagem 1). A seguinte caixa de diálogo é exibida (Figura 2), na qual você deseja selecionar um objeto COM (no nosso caso, o objeto é registrado como "Microsoft.xmldom (versão 2.0)") e criar um arquivo TLB (botão <b>Criar unidade.</b>). Usando o arquivo TLB, o ambiente gera a descrição do arquivo "paskalevsky" do servidor COM - MSXML_TLB.PAS</p> <p>O arquivo MSXML_TLB.PAS descreve todas as interfaces, constantes e servidores COM.</p> <p>Para o acesso aos objetos do elemento COM, é necessário na directiva <b>Usa.</b>adicione o nome do arquivo de descrição da biblioteca (MSXML_TLB.PAS). Abaixo está o programa mais simples que usa o analisador Dom Standard MSXML.DLL, que faz o download do documento XML e exibe-o no elemento Caixa de texto Memo1.</p> <b>usa.</b> Windows, mensagens, sysutils, classes, gráficos, controles, formulários, diálogos, oleserver, msxml_tlb, stdctrls; <b>modelo</b> Tform1 \u003d. <b>aula</b>(TForm) Button1: Tbutton; Memo1: tmemo; <b>procedimento.</b> Button1Click (remetente: Togject); <b> fim;</b> <b>var.</b> Formulário1: TForm1; <b>implementação</b> ($ R * .dfm) <b>Procedimento.</b>Torm1.button1click (remetente: Togject); <span> // Declaração do Objeto Soklass DomDocument;</span> <b>var.</b>cODOC: CODOMDOCUMENT; <span> // classe, consistente com a interface IdomDocument;</span> <b>var.</b>Doc: ixmldocument; <b>começar.</b> <span> // Criando uma instância do objeto DomDocument;</span> Doc: \u003d codoc.create; <span> // Ligue para um método de modo de uma instância do objeto DomDocument;</span> Doc.load ("data.xml"); <span> // Acesso à instância de propriedade XML do objeto DomDocument;</span> Memo1.Text: \u003d doc.xml; <b>fim;</b> <b>fim.</b> <h2>Dom conceito - modelo de documento objeto</h2> <p>Cada documento XML é representado como um conjunto de uma pluralidade de objetos (classes), com que o acesso a elementos individuais (campos de objeto) é possível. Dom - Interface Descreve o acesso a objetos e peças simples de Domstring ou Caracterdata ou elementos XML separados do documento: DomFragmentelement, Domnode, Domelement.</p> <p>A seguir estão as propriedades mais importantes e métodos de XMLDOMDocument, XMLDOMNODE, XMLDOMNODELIST. Deve-se notar que o modelo MSXML.DLL XML Analyzer, o analisador XML MSXML.DLL, apresentado abaixo, são usados \u200b\u200bpelo analisador XML MSXML.DLL do que o Consórcio Dom aprovado pelo modelo W3C.</p> <p>Uma descrição mais completa da interface Dom Objetos pode ser encontrada em</p> <table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" colspan="2"> Objeto xmldomdocument.</td> </tr><tr><td valign="top" colspan="2">Representa o nível superior da hierarquia de objetos e contém métodos para trabalhar com um documento: seus downloads, análise, criação de elementos, atributos, comentários nele, etc. .</td> </tr><tr><td valign="top" colspan="2"><b>Propriedades.</b> </td> </tr><tr><td valign="top" width="39%"><b>Assíncrono.</b> </td> <td valign="top" width="61%">Propriedade Identificando o modo de processamento atual</td> </tr><tr><td valign="top" width="39%" height="19"><b>Erro de análise</b> </td> <td valign="top" width="61%" height="19">Retorna uma referência ao objeto de processamento de erros xmldomparseError</td> </tr><tr><td valign="top" width="39%"><b>Ativar - desativar a verificação do documento.</b> </td> <td> </td> </tr><tr><td valign="top" width="39%"><b>uRL.</b> </td> <td valign="top" width="61%">Retorna o URL do documento</td> </tr><tr><td valign="top" width="39%"><b>documentelement.</b> </td> <td valign="top" width="61%">Contém uma referência ao elemento raiz do documento como um objeto XMLDOMemement.</td> </tr><tr><td valign="top" colspan="2"><b>Métodos</b> </td> </tr><tr><td valign="top" width="39%"><b>carga (URL) <br>loadxml (xmlstring)</b> </td> <td valign="top" width="61%">Carrega um documento XML</td> </tr><tr><td valign="top" width="39%"><b>salvar (objtarget)</b> </td> <td valign="top" width="61%">Salva o documento XML no arquivo</td> </tr><tr><td valign="top" width="39%"><b>aBORTAR.</b> </td> <td valign="top" width="61%">Interrompendo o processo de download e processamento do documento.</td> </tr><tr><td valign="top" width="39%"><b>createattribute (nome)</b> </td> <td valign="top" width="61%">Cria um novo atributo com o nome especificado para o item atual.</td> </tr><tr><td valign="top" width="39%"><b>createnode (tipo, nome, namespaceuri)</b> </td> <td valign="top" width="61%">Cria um nó do tipo e título especificado</td> </tr><tr><td valign="top" width="39%"><b>createelement (tagname)</b> </td> <td valign="top" width="61%">Cria um elemento de documento com o nome especificado.</td> </tr><tr><td valign="top" width="39%"><b>createTextNode (dados)</b> </td> <td valign="top" width="61%">Cria texto dentro do documento</td> </tr><tr><td valign="top" width="39%"><b>getElementsbyTagname (tagname)</b> </td> <td valign="top" width="61%">Retorna um link para a coleção de itens do documento com o nome especificado</td> </tr><tr><td valign="top" width="39%"><b>nODEFROMID (idstring)</b> </td> <td valign="top" width="61%">Elemento de pesquisa por identificador</td> </tr></tbody></table><br><table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" colspan="2"> <b>Objeto xmldomnode.</b> </td> </tr><tr><td valign="top" colspan="2">Objeto xmldomnode que implementa a interface do DOM básica <b>Nó.</b>, Projetado para manipular com um nó separado de uma árvore de documentos. Suas propriedades e métodos permitem receber e alterar informações completas sobre o nó atual - seu tipo, nome, nome completo, seu conteúdo, uma lista de elementos filho, etc.</td> </tr><tr><td valign="top" colspan="2"><b>Propriedades.</b> </td> </tr><tr><td valign="top" width=" "><b>nodename, basename.</b> </td> <td valign="top" width="65%">Retorna o nome do nó atual.</td> </tr><tr><td valign="top" width="35%"><b>prefixo.</b> </td> <td valign="top" width="65%">Retorna o prefixo do namespace.</td> </tr><tr><td valign="top" width="35%"><b>tipo de dados</b> </td> <td valign="top" width="65%">Define o tipo de conteúdo do nó atual</td> </tr><tr><td valign="top" width="35%"><b>nODETYPE, NODETYPESTING.</b> </td> <td valign="top" width="65%">Retorna o tipo do nó atual:</td> </tr><tr><td valign="top" width="35%"><b>atributos.</b> </td> <td valign="top" width="65%">Retorna uma lista de atributos do nó atual como a coleção XMLDomNamendaMap.</td> </tr><tr><td valign="top" width="35%"><b>tEXTO.</b> </td> <td valign="top" width="65%">Retorna o conteúdo do suporte atual na forma de texto.</td> </tr><tr><td valign="top" width="35%"><b>xml.</b> </td> <td valign="top" width="65%">Retorna a representação XML do suporte atual.</td> </tr><tr><td valign="top" width="35%"><b>nODevalue.</b> </td> <td valign="top" width="65%">Retorna o conteúdo do nó atual.</td> </tr><tr><td valign="top" width="35%"><b>childnodes.</b> </td> <td valign="top" width="65%">Retorna uma lista de elementos filho como xmldomnodelist.</td> </tr><tr><td valign="top" width="35%"><b>firstild, LastChild.</b> </td> <td valign="top" width="65%">Retorna o primeiro / último elemento filho</td> </tr><tr><td valign="top" width="35%"><b>anteriormente, nextsibling</b> </td> <td valign="top" width="65%">Retorna o elemento de enfermagem anterior / seguinte.</td> </tr><tr><td valign="top" width="35%"><b>parentnode.</b> </td> <td valign="top" width="65%">Contém uma referência ao elemento pai.</td> </tr><tr><td valign="top" width="35%"><b>proprietário.</b> </td> <td valign="top" width="65%">Retorna o ponteiro para o documento no qual o nó atual está localizado.</td> </tr><tr><td valign="top" colspan="2"><b>Métodos</b> </td> </tr><tr><td valign="top" width="35%"><b>appendChild (Newchild)</b> </td> <td valign="top" width="65%">Adiciona um novo elemento filho ao nó atual.</td> </tr><tr><td valign="top" width="35%"><b>insertBefore (NewChild, RefCHild)</b> </td> <td valign="top" width="65%">Insere um nó filho, tê-lo na subárvore atual "esquerda" do nó especificado pelo parâmetro RefCHild.</td> </tr><tr><td valign="top" width="35%"><b>cloneenode (profundo)</b> </td> <td valign="top" width="65%">Crie uma cópia do elemento atual.</td> </tr><tr><td valign="top" width="35%"><b>getAttribute.</b><b>(Nome) <br> </b><b>getattributeNode.</b><b><span> (Nome) <br>setAttribute (nome, valor) <br>setattributeNode (xmldomattribute)</span> </b> </td> <td valign="top" width="65%">Acesso a atributos (criação, leitura, escrita) objeto. Nome - Nome do atributo, valor - seu valor. Retorna o valor do objeto xmldomattribute.</td> </tr><tr><td valign="top" width="35%"><b>replacechild (Newchild, Oldchild) removeChild (Oldchild)</b> </td> <td valign="top" width="65%">Substituindo o objeto OldChild da lista atual de subsidiárias no NewChild. Removendo o objeto OldChild</td> </tr><tr><td valign="top" width="35%"><b>selectnodes selectsinglende (patternString)</b> </td> <td valign="top" width="65%">Retorna o objeto XMLDOMNODELIST selecionado por padrão de pesquisa ou primeiro nó</td> </tr><tr><td valign="top" width="35%"><b>transformnode (estilo) <br>transformNoDetObject (Stylesheet, OutuDoodObject)</b> </td> <td valign="top" width="65%">Atribui uma tabela de estilo para suportar o nó atual e retorna a string - o resultado do processamento. Uma referência ao objeto DomDocument é transmitida como um parâmetro, na qual as instruções do XSL estão localizadas.</td> </tr></tbody></table><br><h2>Usando XML no negócio.</h2> <p>Para uma imagem mais clara, uma explicação é necessária, e por que tudo isso é necessário com o que entender como funciona:</p> <p>Ao construir um sistema B2B ou Corporate ERP, ao organizar uma troca de informações de documentos XML entre empresas ou ramificações do Prom-I, um sistema de informação efetivamente comprovado é usado com base nos servidores da Web disponíveis em protocolos HTTP.</p> <p>Por um lado, o aplicativo atua como um cliente, que no modo pós emite uma consulta HTTP, por outro lado, o servidor da Web está na lateral da qual a solicitação é processada e a resposta. Documentos XML são usados \u200b\u200bcomo trocando.</p> <p>Por exemplo, em um sistema de ERP corporativo simples do programa de contabilidade (contabilidade ACS), é necessário formar uma determinada solicitação de uma fatura e transferi-la para uma filial que tenha um armazém (ACS Warehouse). A arte é uma configuração semelhante do problema ao criar um B2B do sistema, quando uma empresa solicita a disponibilidade de produtos (faz um pedido para a compra) do fornecedor V.</p> <p>Enterprise A e seu programa atua como cliente. O armazém atende ao fornecedor em quem tem um complexo BD de armazém no SQL Server. Exchange é realizado através de um fornecedor de servidor da Web corporativa V.</p> <p>Abaixo está o seguinte algoritmo típico de troca:</p> <br>Figura 3. <ol><li><b>Enterprise A.</b>iniciações. <b>processo A.</b>(Ordem de produto), que atua como um cliente da Web.</li><li><b>Processo A.</b>gera um documento XML (por exemplo, uma fatura) e transmite-o como uma consulta pós-HTTP para um servidor Web Servidor V. Como um URI - Um identificador de aplicativo de processamento é usado. O URI pode ser o mesmo que para todos os tipos de documentos ou individuais para cada tipo. Tudo depende da estrutura do servidor B2B (Web).</li><li>O servidor da Web analisa a solicitação e gera o servidor <b>Processo B.</b>Passando um documento XML como um parâmetro. <br>O processo no servidor da Web é iniciado e processado como página ASP, CGI (ISAPI) - Aplicativo ou Java Sevrlet (Servidor)</li><li><b>Processo B.</b>- gera uma solicitação para o servidor de banco de dados SQL.</li><li>O SQL Server faz as operações necessárias no banco de dados, formam a resposta e o retorna. <b>Processo B.</b>.</li><li>Na resposta do SQL Server <b>Processo B.</b> Gera um documento XML (resposta) e permite que seja uma resposta à solicitação HTTP para o aplicativo cliente.</li><li>Além disso, dependendo da situação no lado do cliente, uma nova consulta HTTP é formada ou a sessão termina.</li> </ol><h2>Algumas palavras sobre a organização do gerenciamento de documentos.</h2> <p>A regra geral de desenvolvimento do sistema de troca XML é:</p><ul><li><b>em primeiro lugar</b>- Desenvolvimento do circuito do fluxo de documentos eletrônicos e sua estrutura;</li><li><b>em segundo lugar</b>- Desenvolvimento de tabelas de funções de processos (subprocessos) ou seja. Qual função em relação a qual documento XML implementará cada processo.</li> </ul><p>Cada documento XML, como um documento HTML, deve consistir em um cabeçalho de mensagens (prisioneiro de informações) e um corpo de mensagem (para consultar essas informações enquadradas por marcação para responder à solicitação). Para que o documento XML seja formado corretamente, é necessário para seus dois componentes do "cabeçalho" e "solicitação" para tags emolduradas, por exemplo. A visão do documento padrão é apresentada abaixo:</p> <p>O título (Figura 4), em contraste com o HTML do documento, deve conter diferentes tipos de informações de serviço, incluindo informações sobre o tipo de processo transmitido e processo de processamento. O processamento informacional do documento é recebido, isto é. A parte significativa é enquadrada por tag. Deve-se notar que a estrutura do cabeçalho deve ser unida para todos os tipos de documentos.</p> <p>Para o processo em execução pelo servidor, o algoritmo de processamento é preferencialmente (mas não necessário) para construir da seguinte forma:</p> <img src='https://i1.wp.com/codenet.ru/np-includes/upload/2005/01/05/128666.jpg' height="500" width="408" loading=lazy loading=lazy><br>Figura 6. <h2>Alguns momentos principais ao criar uma parte do cliente</h2> <p>Como já explicado, ao criar um documento XML usa sua representação na forma de um modelo DOM. Abaixo está um exemplo do texto do texto Delphi do programa de cabeçalho XML de mensagens.</p> <b>procedimento.</b>Tthread1.headercreate (remetente: Togject); <b>var.</b> <span> // Anúncio de classes é necessário para criar</span> CODOC: CODOMDOCUMENT; <span> // objeto xmldomdocument.</span> Doc: DomDocument; R: ixmldomelement; Nó: ixmldomelement; // domtext txt: ixmldomtext; // domattribute attr: ixmldomattribute; <b>começar.</b> <span> // criando documento dom</span> Doc: \u003d codoc.create; Doc.set_async (falso); <span> // Iniciação inicial Dom Documento</span> Doc.loadxml (" <Header/>"); <span> // criando domelement (tag<<b>Remetente.</b>>) </span> Nó: \u003d doc.createelement ("remetente"); <span> // criando um nó de texto " <b>Llc "tufão"</b>" </span> Txt: \u003d doc.createTextNode ("LLC" Typhoon "); <span> // Atribuindo um nó<<b>Remetente.</b>\u003e Valor</span> <span> // nó de texto " <b>Llc "tufão"</b>" </span> Nó.AppendChild (TXT); <span> // Adicionando um item<<b>Remetente.</b>\u003e Na raiz do documento como subsidiária</span> R.Appendchild (nó); <span> <<b>A partir de.</b>> </span> Nó: \u003d doc.createelement ("de"); Txt: \u003d doc.createTextNode ("http://tayfun.ru/xml/default.asp"); Nó.AppendChild (TXT); R.Appendchild (nó); <span> // operações semelhantes para tag<<b>Para.</b>> </span> Nó: \u003d doc.createelement ("to"); Txt: \u003d doc.createTextNode ("http://irbis.ru"); Nó.AppendChild (TXT); R.Appendchild (nó); <span> // cria domelement ()</span> Nó: \u003d doc.createelement ("TypeDocument"); <span> // Criando um nó XMLDOMAttribute</span> ATT: \u003d doc.createattribute ("ID", "ordem"); <span> // <TypeDocument Id="Order"/> </span> Nó.AppendChild (ATT); R.Appendchild (nó); <b>fim;</b> <p>Deve-se notar que o anúncio do CODOC: CODOMDocument e Doc: DomDocument variável, bem como a criação do método Create (DOC: \u003d codoc.create;) é realizado uma vez. A declaração da variável está na seção da descrição das variáveis \u200b\u200bglobais, e não no procedimento local, como demonstrado para visibilidade neste exemplo (isto é, uma variável global do módulo do programa DomDocument Type One).</p> <p>O resultado do programa acima será o cabeçalho criado, em relação ao nosso exemplo do documento XML: representado na Figura 5.</p> <img src='https://i0.wp.com/codenet.ru/np-includes/upload/2005/01/05/128662.gif' height="116" width="298" loading=lazy loading=lazy><br>Figura 5. <p><img src='https://i0.wp.com/codenet.ru/np-includes/upload/2005/01/05/128664.gif' height="179" width="385" loading=lazy loading=lazy><br>Figura 6.</p><p>A principal vantagem de transmitir informações na forma de documentos XML é que é possível formar uma mensagem usando a estrutura independente das tabelas no DBMS no lado recebido e no lado transmitido. Usando nosso exemplo, seja necessário transferir informações sobre as faturas da empresa A, a partir do DBMS da estrutura mostrada na Figura 6</p> <p>Para formar um documento XML contendo uma fatura, uma solicitação SQL inicialmente criada (consulta A) com informações sobre a fatura:</p> <b>Selecione.</b> * De Invoice_General <b>Onde</b> INVOICENUM \u003d: num <b>Selecione.</b>Bens, quulity, preço, hz_cod <b>A partir de.</b>Bens <b>Onde</b> INVOICENUM \u003d: num <span> //: num - O parâmetro que especifica o número da fatura.</span> <p>Abaixo faz parte do programa formando o corpo do documento XML:</p> <b>procedimento.</b> Tthread1.databodycreate (remetente: TOBJECT); <b>var.</b> <span> // classes e xmldomdocument</span> // codoc: codomdocument; <span> // deve ser global, para todo o módulo.</span> // doc: domdocument; <span> // Anúncio de Domelement Objects</span> R: ixmldomelement; // Domeleamento; Nó, node2: ixmldomelement; Node3, node4: ixmldomelement; // domtext txt: ixmldomtext; Str: string; <span> // Invoicenumber: <b>inteiro;</b> - Global Variável - // Masching 987654 // Querya, QueryB: <b>Fragmento;</b> - Variável Global, // Mantendo uma solicitação para solicitação // Querya - solicitação e informações gerais sobre fatura // QueryB - consulta B informações sobre as mercadorias descritas em // fatura (veja o texto)</span> <b>começar.</b> Consulta.close; <span> // veja no texto "Solicitar A"</span> Query.Text: \u003d Querya; <span> // Solicitar Execução</span> Consulta.execsql; Consulta.open; <span> // recebe o endereço do elemento raiz</span> R: \u003d doc.get_documentelement; Node2: \u003d doc.createelement ("solicitação"); <span> // cria domelement (tag)</span> Nó: \u003d doc.createelement ("fatura"); <span> // Adicionando um item à raiz</span> R.AppendChild (Node2); <span> // Adicionando um item em</span> Node2. AppendChild (nó); <span> // cria domelement (tag)</span> Node3: \u003d doc.createelement ("depurture"); <span> // Adicionando um item em</span> Nó. AppendChild (Node3); <span> // apelo ao campo "depurture"</span> Str: \u003d consulta.fieldbyname ("depurture"). Assente; <span> // criando um nó de texto \u003d valor de campo</span><span> // valor de atribuição do nó</span> <span> // nó de texto, variável str</span> Nó.AppendChild (TXT); <span> // operações semelhantes para tag <Destination>, <DataSend>, // <DataDepurture>, <Currency> // <DestinationCompany> (campo DB "consignee")</span> Nó: \u003d doc.createelement ("destino"); <span> // o nome do campo do banco de dados pode não coincidir com o nome</span> Str: \u003d consulta.fieldbyname ("consignatário"). <span> //Ca, nesta vantagem de uso</span> Txt: \u003d doc.createTextNode (str); <span> // Dom interface antes do DBMs ter o suporte da interface XML, // digite Oracle 8i ou MS SQL 2000</span> Nó.AppendChild (TXT); ... <span> // Formação de uma solicitação de especificação de mercadorias</span> <span> // fecha solicitação de acesso</span> Consulta.close; <span> // Consulte no texto "Solicitar In", Info. Sobre produtos.</span> Query.Text: \u003d QueryB; <span> // Atribuindo valores de parâmetros</span> Consulta.params.asinteger: \u003d Invoicenumber; <span> // Solicitar Execução</span> Query2.execsql; <span> // Acesso de abertura aos dados de solicitação</span> Consulta.open; <span> // cria domelement (tag)</span> Node3: \u003d doc.createelement ("imems"); <span> // Adicionando um item em</span> Nó. AppendChild (Node3); <span> // ciclo em todas as solicitações</span> <b>enquanto</b> <b>não.</b> Eof.query. <b>faz.</b> Começar node4: \u003d doc.createelement ("imem"); <span> // Adicionando um item em</span> Node3.AppendChild (Node4); <span> // geração de dados para tag</span> Str: \u003d consulta.fieldbyname ("Preço"). Assente; Txt: \u003d doc.createTextNode (str); Nó.AppendChild (TXT); ... <span>// operações semelhantes para tags <HZ_Cod>, <Quality>, <GoodName> </span> <b>fim;</b> <b>fim;</b> <p>Como resultado deste procedimento, o seguinte texto do documento XML é formado:</p> <table width="100%"><tbody><tr><td align="middle"><br><img src='https://i2.wp.com/codenet.ru/np-includes/upload/2005/01/05/128661.gif' width="100%" loading=lazy loading=lazy></td> </tr></tbody></table><p>O método aberto é usado para formar uma consulta. <b>Ixmlhttprequest.</b>:</p> <b>procedimento.</b> Aberto (Const Bstrmethod, - Método Tipo \u003d "Postar" Bstrurl, - Endereço do servidor URL Varasync, - Modo de comunicação assíncrona / síncrona \u003d True BSTRUSER, - Nome de usuário para a autenticação Bstrassword) - Senha <h2>Criando uma parte do servidor do processamento de documentos</h2> <p>Como observado anteriormente, o processamento da solicitação HTTP pode ser realizado ou aplicativos CGI ou Servlets Java. Possíveis opções para escrever páginas ASP. Mas, neste caso, a transmissão de dados só é possível pelo "GET" usando a string de consulta. Embora, o processamento HTTP do pedido da página ASP funcione com mais eficiência do que o aplicativo CGI. No entanto, na minha opinião, sem qualquer diferença, como processar e, mais importante, resolver a questão - como construir um programa de processamento e não com o que significa.</p> <p>Se revisamos uma opção de formação de documentos XML no capítulo anterior, a tarefa do aplicativo do servidor é o oposto dos documentos XML. Abaixo faz parte do programa que analisa o documento XML:</p> <b>procedimento.</b>Tthread1.dataparser (remetente: TOBJET); <b>var.</b> <span>// Anúncio de Domelement Objects</span> R, fnode: ixmldomelement; Str, nome do arquivo: string; Parm: string; <span>// Anúncio de Soklass e</span> Codocxml, codocxsl, codocresult: codomdocument; <span>// objeto xmldomdocument.</span> Xmldoc, xsldoc, resultdoc: domdocument; <span>// httptr: string; - uma variável global contendo a seqüência de consulta HTTP</span> <b>Começar.</b> Xmldoc: \u003d codocxml.create; Xmldoc.loadxml (httptr); <span> // recebe o endereço do elemento raiz</span> R: \u003d doc.get_documentelement; <span> // obtendo o valor do elemento</span> Fnode: \u003d r.SelectsingLenode ("// typeDocument"); <span> // Obtenha um valor de atributo ID \u003d "ordem"</span> Nome do arquivo: \u003d fnode.GetTible ("ID"); <span> // e formando o nome do arquivo Order.xsl</span> Nome do arquivo: \u003d nome do arquivo + ". Xsl"; <span> // criando um documento xsldoc</span> Xsldoc: \u003d codocxsl.create; Xsldoc.loadxml (nome do arquivo); <span> // Criando um documento XMLDOC</span> Resultdoc: \u003d codocresult.create; <span> // Definindo o modo de processamento síncrono</span> Resultdoc.set_async (FALSE); <span> // Instalando a verificação de estreia</span> Resultdoc.validateonparase: \u003d true; <span> // Colapso XMLDOC pelo modelo XSL</span> Xmldoc.transformnoc, resultdoc (xsldoc, resultdoc); <span> // variável str é atribuído ao valor de texto</span> <span> // Documento resultante.</span> Str: \u003d resultdoc.text; <span> // elemento de pesquisa.</span> FNODE: \u003d R.SelectsingLenode ("// Invoicenumber"); <span> // e obter o valor do elemento</span> Parm: \u003d fnode.text; <span> // fecha solicitação de acesso</span> Consulta.close; Query.text: \u003d str; <span> // Atribuindo o valor do parâmetro</span> Consulta.params.assstring: \u003d Parm; <span> // Solicitar Execução</span> Consulta.execsql; <b>fim;</b> <p>Toda a gama de análise é aplicar o modelo XSL, que é formado para cada tipo de documento individualmente. O resultado da análise é a seqüência de consulta SQL. Em conseqüência, a execução da string de consulta SQL gerada fará as alterações necessárias no DBMS.</p> <p>A vantagem de usar a análise através do modelo também é, no fato de que ela acessa alguma flexibilidade de dados, e a completa independência da operação do algoritmo do código do programa é obtida. Abaixo está o texto do modelo XSL usado para processamento do tipo de documento.</p><p> <!-- файл Order.xsl --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:for-each select="//header"> Inserir em Tabreg (de, para, TypeDoc, Body) Valores (" <xsl:value-of select="from" />", "<xsl:value-of select="to" />", "<xsl:value-of select="TypeDocument/@id" />") </xsl:for-each> <xsl:for-each select="//item"> Inserir em mercadorias (Invoicenumber, Nome, Preço, Qualidade) Valores (": Num", " <xsl:value-of select="name" />", "<xsl:value-of select="price" />", "<xsl:value-of select="quality" /> ") </xsl:for-each> </xsl:template> </xsl:stylesheet> </p><p>Ecular o exemplo acima, deve-se notar que o uso de pares de tags e é formal, porque Depois de analisar, pelo menos um nó deve estar presente no documento XML resultante. O método resultDoc.Text atribui o valor de texto obtido durante a análise do documento XML resultDoc. Neste caso, o valor é tudo o que os pares de tags são enquadrados e, isto é, Nós formamos uma solicitação SQL.</p> <p>Outra característica de escrever o programa deve ser observada a possibilidade de usar o parâmetro SQL <b>: num.</b> O uso do parâmetro permite simplificar o texto do modelo XSL. Definição O valor dos elementos correspondentes dos nós de documento XML é determinado inicialmente selecionando o nome do nó correspondente, por exemplo:</p><h2>Brevemente sobre o XSL.</h2> <p>A abreviação do XSL vem da linguagem de formatação de tabela de estilo de estilo estillesheet extensível (dados XML). Como é claro no cabeçalho da linguagem de estilo extensível (XSL) (XSL), é usado para formatar dados XML. Por definição de w3c xsl consiste em duas partes:</p> <ul><li>XSLT - Transformação XSL. A linguagem usada para converter ou formatar documentos XML. Assim, usando o XSLT, podemos obter diferentes seções de vários dados e formulários de apresentação de dados.</li><li>Formatando elementos. Esses elementos incluem todos os elementos do desenho de dados tipográficos, depois de serem processados \u200b\u200busando o XSL. Usado apenas para formar páginas HTML.</li> </ul><p>Usando o XSLT, podemos selecionar os dados do arquivo XML que você precisa e organizá-los no formulário para fornecer ao usuário. Por exemplo, no nosso caso, transformamos dados XML como uma consulta SQL. O aplicativo XSL clássico geralmente está formatando dados como páginas HTML ou uma representação rara no formulário de arquivos RTF.</p> <p>O arquivo XSL descreve o modelo (modelo), de acordo com o qual a conversão de dados XML será executada. Retornando aos modelos XSL, os seguintes elementos podem ser alocados em XSLT (diretivas):</p> <table cellspacing="0" cellpadding="4" width="500" border="1"><tbody><tr><td valign="top" width="31%"> <b>Diretiva XSL.</b> </td><th align="middle" width="69%"> <b>descrição</b> </th> </tr><tr><td>xSL: aplicar-modelos</td> <td>Diretiva, indicando a aplicação do atributo de modelos apropriados selecione \u003d "nome do modelo"</td> </tr><tr><td>xSL: atributo.</td> <td>cria a árvore de atributos e adiciona-a ao elemento de saída, o parâmetro Name \u003d "Nome do atributo", namespace - URI no namespace (prefixo do namespace)</td> </tr><tr><td>xSL: Modelo de chamada</td> <td>faz com que um modelo, nome do atributo \u003d "URI no modelo"</td> </tr><tr><td>xsl: escolha. <br>xSL: Quando. <br>xSL: Caso contrário.</td> <td>fazendo uma seleção por condição xsl: quando expr \u003d "Calculando a expressão no script", <br>língua \u003d "Nome da linguagem" <br>teste \u003d "Expressão calculada"</td> </tr><tr><td>xSL: comentário.</td> <td>gera um comentário sobre o documento de saída</td> </tr><tr><td>xsl: cópia. <br>xSL: copie-of</td> <td>copia o nó atual na fonte de saída ou insere o fragmento do documento para o nó, onde o atributo select \u003d "do nó de origem"</td> </tr><tr><td>xSL: elemento.</td> <td>cria um elemento de saída por nome, nome do atributo \u003d "nome do elemento", namespace \u003d "referência de URI ao namespace"</td> </tr><tr><td>xsl: para cada</td> <td>reaplique o modelo para todos os nós de lista de nós, selecione Atributo Define uma lista de nós.</td> </tr><tr><td>xsl: se.</td> <td>as condições verificações são definidas pelo atributo de teste como uma expressão</td> </tr><tr><td>xSL: incluir.</td> <td>inclui um modelo externo, atributo href \u003d "referência de URI"</td> </tr><tr><td>xSL: Saída</td> <td>especifica o resultado da saída, o atributo do método pode ter "XML", "HTML" ou "Texto"</td> </tr><tr><td>xSL: param.</td> <td>especifica o valor do parâmetro, o atributo Name \u003d "Nome do Parâmetro", selecione \u003d "Valor"</td> </tr><tr><td>xSL: Instrução de processamento</td> <td>cria instruções para processamento, nome do atributo \u003d "Instruções de processo de nome"</td> </tr><tr><td>xSL: Classifique.</td> <td>classifica muitos nós, atributos Selecionar \u003d "Nome do nó", Data-Type \u003d Data Type ("Texto" | "Número" | qname), ordem \u003d direção de classificação ("ascendente" | "Descendente")</td> </tr><tr><td>xSL: Stylesheet.</td> <td>define o documento XSL Template, é o elemento raiz para xslt</td> </tr><tr><td>xSL: modelo.</td> <td>especifica o modelo XSL, o atributo do prefixo do nome \u003d "para o nome do modelo", match \u003d "note para o nó ao qual o modelo se aplica"</td> </tr><tr><td>xsl: texto.</td> <td>gera texto para o stream de saída, o atributo desativar-saída - escape \u003d "sim" ou "não" indica a capacidade de gerar caracteres ESC</td> </tr><tr><td>xSL: valor - de</td> <td>insere o valor do nó selecionado como o texto, o atributo select \u003d "apontador para o nó" da qual o valor é feito</td> </tr><tr><td>xSL: variável.</td> <td>especifica o valor dos limites variáveis, o atributo Name \u003d "Nome da variável", selecione \u003d "Calcular o valor da variável"</td> </tr><tr><td>xSL: com param</td> <td>aplica o parâmetro para o modelo, o atributo Name \u003d "Nome do parâmetro", selecione \u003d Expressão para calcular o contexto atual, o valor padrão "."</td> </tr></tbody></table><h2>Conclusão</h2> <p>Em conclusão, deve-se notar que o uso do analisador padrão XML <i>msxml.dll.</i>não é o único meio de analisar e criar documentos XML. Por exemplo, para criar documentos XML para usar efetivamente os componentes <b>TPAGEPRODUSER.</b>e <b>TTableProduser.</b>. Mas este artigo enfatiza apenas a amplitude e a possibilidade de aplicar um modelo Dom na prática.</p> <p>O autor será muito grato por feedback sobre a relevância do tópico, o conteúdo geral, o estilo de apresentação, bem como todos os outros comentários que ajudarão a melhorar ainda mais a qualidade de escrever uma coleção de artigos e a liberação de livros que cobre o assunto do lado prático do uso de documentos XML no e-commerce. Para obter mais informações sobre o lado prático da aplicação de documentos eletrônicos, você pode aprender em www.edocs.al.ru no site do autor, também é planejado para colocar textos e exemplos de origem.</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> <div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div> </div> <footer> <div class="td-block-row td-post-next-prev"> <div class="td-block-span6 td-post-prev-post"> <div class="td-post-next-prev-content"><span>Artigo anterior</span><a href="https://obanracer.ru/pt/chto-delat-net-podklyucheniya-serveru-pochemu-ne-podklyuchaetsya-k.html">Por que não se conectar ao servidor?</a></div> </div> <!-- /next_post --> <div class="td-next-prev-separator"></div> <div class="td-block-span6 td-post-next-post"> <div class="td-post-next-prev-content"><span>Próximo artigo</span><a href="https://obanracer.ru/pt/programma-dlya-udaleniya-baidu-antivirus-baidu-chto-eto-za-programma-takaya-i-kak-e.html">Baidu - O que é este programa e como removê-lo de um computador?</a></div> <!-- /next_post --> </div> </div> <div class="td-author-name vcard author" style="display: none"><span class="fn"><a href="https://obanracer.ru/pt/author/iulia">Júlia</a></span></div> <span style="display: none;" itemprop="author" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Юлия"></span> <meta itemprop="datePublished" content="2016-05-16T15:47:37+00:00"> <meta itemprop="dateModified" content="2016-10-25T16:54:41+00:00"> <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="/other/kak-zavyazat-galstuk-foto-poshagovo.html" /><span style="display: none;" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><span style="display: none;" itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="//obanracer.ru/wp-content/uploads/2017/01/logo-300x100.png"></span> <meta itemprop="name" content="Мой секрет"> </span> <meta itemprop="headline " content="Как завязать галстук пошагово фото"><span style="display: none;" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="/wp-content/uploads/2016/05/1-19.jpg"><meta itemprop="width" content="640"><meta itemprop="height" content="450"></span> </footer> </article> <div class="td_block_wrap td_block_related_posts td_uid_3_5a236fb03c961_rand td_with_ajax_pagination td-pb-border-top td_block_template_1" data-td-block-uid="td_uid_3_5a236fb03c961" ><script>var block_td_uid_3_5a236fb03c961 = new tdBlock(); block_td_uid_3_5a236fb03c961.id = "td_uid_3_5a236fb03c961"; block_td_uid_3_5a236fb03c961.atts = '{ "limit":9,"sort":"","post_ids":"","tag_slug":"","autors_id":"","installed_post_types":"","category_id":"","category_ids":"","custom_title":"","custom_url":"","show_child_cat":"","sub_cat_ajax":"","ajax_pagination":"next_prev","header_color":"","header_text_color":"","ajax_pagination_infinite_stop":"","td_column_number":3,"td_ajax_preloading":"","td_ajax_filter_type":"td_custom_related","td_ajax_filter_ids":"","td_filter_default_txt":"\u0412\u0441\u0435","color_preset":"","border_top":"","class":"td_uid_3_5a236fb03c961_rand","el_class":"","offset":"","css":"","tdc_css":"","tdc_css_class":"td_uid_3_5a236fb03c961_rand","live_filter":"cur_post_same_categories","live_filter_cur_post_id":10046,"live_filter_cur_post_author":"694350","block_template_id":""} '; block_td_uid_3_5a236fb03c961.td_column_number = "3"; block_td_uid_3_5a236fb03c961.block_type = "td_block_related_posts"; block_td_uid_3_5a236fb03c961.post_count = "9"; block_td_uid_3_5a236fb03c961.found_posts = "26"; block_td_uid_3_5a236fb03c961.header_color = ""; block_td_uid_3_5a236fb03c961.ajax_pagination_infinite_stop = ""; block_td_uid_3_5a236fb03c961.max_num_pages = "3"; tdBlocksArray.push(block_td_uid_3_5a236fb03c961); </script><h4 class="td-related-title td-block-title"><a id="td_uid_4_5a236fb03e35d" class="td-related-left td-cur-simple-item" data-td_filter_value="" data-td_block_id="td_uid_3_5a236fb03c961" href="#">Artigos similares</a></h4><div id=td_uid_3_5a236fb03c961 class="td_block_inner"> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/chto-takoe-plitka-prilozheniya-windows-10-pereimenovanie-grupp-plitok.html" rel="bookmark" title="Renomear grupos de telhas"><img width="218" height="150" class="entry-thumb" src="/uploads/cf43b1300940c9d21bc2fa4ef39022cd.jpg" alt="Renomear grupos de telhas" title="Renomear grupos de telhas"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/case/" class="td-post-category">Corpo</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/chto-takoe-plitka-prilozheniya-windows-10-pereimenovanie-grupp-plitok.html" rel="bookmark" title="Renomear grupos de telhas">Renomear grupos de telhas</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/sohranyaetsya-li-baidu-posle-udaleniya-baidu-chto-eto-za-programma.html" rel="bookmark" title="Baidu - O que é este programa e como removê-lo de um computador?"><img width="218" height="150" class="entry-thumb" src="/uploads/23ff15663a3873756e227fde502aff48.jpg" alt="Baidu - O que é este programa e como removê-lo de um computador?" title="Baidu - O que é este programa e como removê-lo de um computador?"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/graphics-card/" class="td-post-category">Cartão de vídeo</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/sohranyaetsya-li-baidu-posle-udaleniya-baidu-chto-eto-za-programma.html" rel="bookmark" title="Baidu - O que é este programa e como removê-lo de um computador?">Baidu - O que é este programa e como removê-lo de um computador?</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/ne-obnovlyaetsya-ofis-parametry-sluzhby-windows-server-update-services-vklyuchenie-i.html" rel="bookmark" title="Serviços de atualização do Windows Server"><img width="218" height="150" class="entry-thumb" src="/uploads/afbc2cba049a9b93e68b93b932401fe6.jpg" alt="Serviços de atualização do Windows Server" title="Serviços de atualização do Windows Server"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/monitors/" class="td-post-category">Monitores.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/ne-obnovlyaetsya-ofis-parametry-sluzhby-windows-server-update-services-vklyuchenie-i.html" rel="bookmark" title="Serviços de atualização do Windows Server">Serviços de atualização do Windows Server</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-vstavit-skrinshot-v-tekstovyi-dokument-kak-sdelat-printskrin-s.html" rel="bookmark" title="Como fazer printscreen usando a tecla PRTSCR"><img width="218" height="150" class="entry-thumb" src="/uploads/40bb5755f17d86916b645797dbe93895.jpg" alt="Como fazer printscreen usando a tecla PRTSCR" title="Como fazer printscreen usando a tecla PRTSCR"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/windows-8/" class="td-post-category">Windows 8.</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-vstavit-skrinshot-v-tekstovyi-dokument-kak-sdelat-printskrin-s.html" rel="bookmark" title="Como fazer printscreen usando a tecla PRTSCR">Como fazer printscreen usando a tecla PRTSCR</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/ne-udalyayutsya-nekotorye-faily-kak-udalit-fail-kotoryi-ne-udalyaetsya-s.html" rel="bookmark" title="Como excluir um arquivo que não é excluído do computador"><img width="218" height="150" class="entry-thumb" src="/uploads/832f6f2a5c9b18ed492518e9ca62b6d8.jpg" alt="Como excluir um arquivo que não é excluído do computador" title="Como excluir um arquivo que não é excluído do computador"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/processors/" class="td-post-category">Processadores</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/ne-udalyayutsya-nekotorye-faily-kak-udalit-fail-kotoryi-ne-udalyaetsya-s.html" rel="bookmark" title="Como excluir um arquivo que não é excluído do computador">Como excluir um arquivo que não é excluído do computador</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/ne-obnovlyaetsya-office-kompaniya-microsoft-obnovit-dizain-programm.html" rel="bookmark" title="Microsoft atualizará o design do programa do Office"><img width="218" height="150" class="entry-thumb" src="/uploads/3b7f959c46564074cdda5ab554a4e9fa.jpg" alt="Microsoft atualizará o design do programa do Office" title="Microsoft atualizará o design do programa do Office"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/more/" class="td-post-category">Outro</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/ne-obnovlyaetsya-office-kompaniya-microsoft-obnovit-dizain-programm.html" rel="bookmark" title="Microsoft atualizará o design do programa do Office">Microsoft atualizará o design do programa do Office</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-pochistit-kesh-stranicy-chto-eto-takoe-i-zachem-nuzhno-kak-ochistit.html" rel="bookmark" title="Como limpar o cache do navegador - resultados de cache garantidos e arquivos limpos"><img width="218" height="150" class="entry-thumb" src="/uploads/4bb960eef8ca487444b51e1f19d1754f.jpg" alt="Como limpar o cache do navegador - resultados de cache garantidos e arquivos limpos" title="Como limpar o cache do navegador - resultados de cache garantidos e arquivos limpos"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/multimedia/" class="td-post-category">Multimídia</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-pochistit-kesh-stranicy-chto-eto-takoe-i-zachem-nuzhno-kak-ochistit.html" rel="bookmark" title="Como limpar o cache do navegador - resultados de cache garantidos e arquivos limpos">Como limpar o cache do navegador - resultados de cache garantidos e arquivos limpos</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-vernutsya-k-pervonachalnym-nastroikam-windows-10-sistema-ne-zagruzhaetsya.html" rel="bookmark" title="Como retornar às configurações iniciais do Windows 10"><img width="218" height="150" class="entry-thumb" src="/uploads/bc590f32d6e6f73d5c0328f7311a802b.jpg" alt="Como retornar às configurações iniciais do Windows 10" title="Como retornar às configurações iniciais do Windows 10"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/case/" class="td-post-category">Corpo</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-vernutsya-k-pervonachalnym-nastroikam-windows-10-sistema-ne-zagruzhaetsya.html" rel="bookmark" title="Como retornar às configurações iniciais do Windows 10">Como retornar às configurações iniciais do Windows 10</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/vstavit-iz-pdf-v-word-laifhak-kak-perevesti-iz-pdf-v-word-i-obratno-zachem-sozdavat-word.html" rel="bookmark" title="Inserir de PDF na palavra. Lifehak. Como traduzir de PDF para Word e Voltar? Por que criar palavra do arquivo PDF"><img width="218" height="150" class="entry-thumb" src="/uploads/807acb9d6d3f2834a54c6ca15b382dff.jpg" alt="Inserir de PDF na palavra. Lifehak. Como traduzir de PDF para Word e Voltar? Por que criar palavra do arquivo PDF" title="Inserir de PDF na palavra. Lifehak. Como traduzir de PDF para Word e Voltar? Por que criar palavra do arquivo PDF"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/security/" class="td-post-category">Segurança</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/vstavit-iz-pdf-v-word-laifhak-kak-perevesti-iz-pdf-v-word-i-obratno-zachem-sozdavat-word.html" rel="bookmark" title="Inserir de PDF na palavra. Lifehak. Como traduzir de PDF para Word e Voltar? Por que criar palavra do arquivo PDF">Inserir de PDF na palavra. Lifehak. Como traduzir de PDF para Word e Voltar? Por que criar palavra do arquivo PDF</a></h3> </div> </div> </div> </div></div></div> </div> </div> <div class="td-pb-span4 td-main-sidebar"> <div class="td-ss-main-sidebar"> <aside class="widget �lambda_169101"> <div style="margin:10px 0"> </div> </aside> <div class="td_block_wrap td_block_1 td_block_widget td_uid_2_5a23c04f0cdc0_rand td-pb-border-top td_block_template_1 td-column-1" data-td-block-uid="td_uid_2_5a23c04f0cdc0"> <div class="td-block-title-wrap"> <h4 class="block-title"><span class="td-pulldown-size">Recomendado</span></h4> </div> <div id=td_uid_2_5a23c04f0cdc0 class="td_block_inner"> <div class="td-block-span12"> <div class="td_module_4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-udalit-kitaiskuyu-programmu-baidu-sposoby-polnogo-udaleniya-s.html" rel="bookmark" title="Métodos para remoção total do computador antivírus Baidu"><img width="324" height="235" class="entry-thumb" src="/uploads/c53260d638eaee92256fed6547a30cb3.jpg" alt="Métodos para remoção total do computador antivírus Baidu" title="Métodos para remoção total do computador antivírus Baidu"/ loading=lazy loading=lazy></a></div> <a href="https://obanracer.ru/pt/category/monitors/" class="td-post-category">Monitores.</a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-udalit-kitaiskuyu-programmu-baidu-sposoby-polnogo-udaleniya-s.html" rel="bookmark" title="Métodos para remoção total do computador antivírus Baidu">Métodos para remoção total do computador antivírus Baidu</a></h3> <div class="td-module-meta-info"> </div> <div class="td-excerpt"> Baidu é um antivírus chinês e que diz tudo. Desenvolveu os criadores do programa do maior motor de busca do Google. O aplicativo se aplica na forma de ...</div> </div> <!-- /next_post --> </div> <div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/v-papke-drugie-xiaomi-poyavilis-rekomendacii-kak-ubrat-rekomendacii-na-xiaomi.html" rel="bookmark" title="Como remover recomendações sobre Xiaomi"><img width="100" height="70" class="entry-thumb" src="/uploads/d7fde961aaf3d1303b49c36ab637f678.jpg" alt="Como remover recomendações sobre Xiaomi" title="Como remover recomendações sobre Xiaomi"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/v-papke-drugie-xiaomi-poyavilis-rekomendacii-kak-ubrat-rekomendacii-na-xiaomi.html" rel="bookmark" title="Como remover recomendações sobre Xiaomi">Como remover recomendações sobre Xiaomi</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/pt/category/motherboard/" class="td-post-category">Motherboards.</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-formatnut-telefon-maikrosoft-lyumiya-kak-sbrosit-do-zavodskih-nastroek.html" rel="bookmark" title="Como redefinir para as configurações de fábrica Nokia lumia"><img width="100" height="70" class="entry-thumb" src="/uploads/02aba6ab2f9b6ccaeeb4434d55ac9a2d.jpg" alt="Como redefinir para as configurações de fábrica Nokia lumia" title="Como redefinir para as configurações de fábrica Nokia lumia"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-formatnut-telefon-maikrosoft-lyumiya-kak-sbrosit-do-zavodskih-nastroek.html" rel="bookmark" title="Como redefinir para as configurações de fábrica Nokia lumia">Como redefinir para as configurações de fábrica Nokia lumia</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/pt/category/internet/" class="td-post-category">a Internet</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/otklyuchenie-klavishi-windows-kak-ubrat-nadpis-ob-aktivacii-cherez.html" rel="bookmark" title="Como remover a inscrição na ativação através do registro"><img width="100" height="70" class="entry-thumb" src="/uploads/a3e0c37c18f8f38cab7b3527683457e3.jpg" alt="Como remover a inscrição na ativação através do registro" title="Como remover a inscrição na ativação através do registro"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/otklyuchenie-klavishi-windows-kak-ubrat-nadpis-ob-aktivacii-cherez.html" rel="bookmark" title="Como remover a inscrição na ativação através do registro">Como remover a inscrição na ativação através do registro</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/pt/category/motherboard/" class="td-post-category">Motherboards.</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-udalit-baidu-s-kompyutera-poshagovaya-instrukciya-kitaiskii.html" rel="bookmark" title="Antivírus Chinês Baidu: Excluímos infecção!"><img width="100" height="70" class="entry-thumb" src="/uploads/358237406677db88f12be5f9677df7c6.jpg" alt="Antivírus Chinês Baidu: Excluímos infecção!" title="Antivírus Chinês Baidu: Excluímos infecção!"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-udalit-baidu-s-kompyutera-poshagovaya-instrukciya-kitaiskii.html" rel="bookmark" title="Antivírus Chinês Baidu: Excluímos infecção!">Antivírus Chinês Baidu: Excluímos infecção!</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/pt/category/power-supply/" class="td-post-category">Suprimentos de energia</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/podklyuchenie-i-otklyuchenie-graficheskogo-klyucha-na-android-vzlomat-graficheskii-parol-androida-mozhno.html" rel="bookmark" title="Hackear uma senha gráfica"андроида" можно Разблокировать любой графический ключ"><img width="100" height="70" class="entry-thumb" src="/uploads/dcf31581c4cb9c34d2214223187ab2bf.jpg" alt="Hackear uma senha gráfica"андроида" можно Разблокировать любой графический ключ" title="Hackear uma senha gráfica"андроида" можно Разблокировать любой графический ключ"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/podklyuchenie-i-otklyuchenie-graficheskogo-klyucha-na-android-vzlomat-graficheskii-parol-androida-mozhno.html" rel="bookmark" title="Hackear uma senha gráfica"андроида" можно Разблокировать любой графический ключ">Hackear uma senha gráfica "Android" você pode desbloquear qualquer tecla gráfica</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/pt/category/internet/" class="td-post-category">a Internet</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/boot-menu-kak-vyzvat-na-noutbuke-chto-takoe-f12-boot-menu-v-bios-zachem-eto-nuzhno.html" rel="bookmark" title="O que é menu de inicialização F12 no BIOS?"><img width="100" height="70" class="entry-thumb" src="/uploads/427da9f70910bfebb0c0035d4c5cb33a.jpg" alt="O que é menu de inicialização F12 no BIOS?" title="O que é menu de inicialização F12 no BIOS?"/ loading=lazy loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/boot-menu-kak-vyzvat-na-noutbuke-chto-takoe-f12-boot-menu-v-bios-zachem-eto-nuzhno.html" rel="bookmark" title="O que é menu de inicialização F12 no BIOS?">O que é menu de inicialização F12 no BIOS?</a></h3> <div class="td-module-meta-info"> <a href="https://obanracer.ru/pt/category/multimedia/" class="td-post-category">Multimídia</a> </div> </div> </div> </div> </div> </div> </div> <aside class="widget_text td_block_template_1 widget widget_custom_html"> <div class="textwidget custom-html-widget"> </div> </aside> </div> </div> </div> </div> </div> <div class="td-footer-wrapper td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span12"> </div> </div> <div class="td-pb-row"> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_11_5a23980e76adb_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_11_5a23980e76adb" > <div class="td-block-title-wrap"></div><div id=td_uid_11_5a23980e76adb class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-nastroit-wi-fi-router-d-link-poshagovaya-instrukciya-nastroika-wifi.html" rel="bookmark" title="Configurando um roteador WiFi D-Link Dir300 ("серый" интерфейс) Как работает d link"><img width="218" height="150" class="entry-thumb" src="/uploads/6e74bdf1ef261d7b50f80c4a680fbc4a.jpg" alt="Configurando um roteador WiFi D-Link Dir300 ("серый" интерфейс) Как работает d link" title="Configurando um roteador WiFi D-Link Dir300 ("серый" интерфейс) Как работает d link"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-nastroit-wi-fi-router-d-link-poshagovaya-instrukciya-nastroika-wifi.html" rel="bookmark" title="Configurando um roteador WiFi D-Link Dir300 ("серый" интерфейс) Как работает d link">Configurando o WiFi Router D-Link Dir300 ("Cinza" Interface Como D.</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/udalenie-neudalyaemyh-prilozhenii-android-kak-udalit-prilozhenie-s.html" rel="bookmark" title="Como excluir um aplicativo do Android se não for excluído?"><img width="218" height="150" class="entry-thumb" src="/uploads/556b6830df1103096291cd20d76deccc.jpg" alt="Como excluir um aplicativo do Android se não for excluído?" title="Como excluir um aplicativo do Android se não for excluído?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/udalenie-neudalyaemyh-prilozhenii-android-kak-udalit-prilozhenie-s.html" rel="bookmark" title="Como excluir um aplicativo do Android se não for excluído?">Como excluir um aplicativo do Android se não for excluído?</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/ustranyaem-oshibku-bootmgr-is-missing-bootmgr-is-missing---chto-delat-i-kak.html" rel="bookmark" title="Bootmgr está ausente - o que fazer e como corrigir?"><img width="218" height="150" class="entry-thumb" src="/uploads/b282c79ae822ff5d27a9dc006e2718ce.jpg" alt="Bootmgr está ausente - o que fazer e como corrigir?" title="Bootmgr está ausente - o que fazer e como corrigir?"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/ustranyaem-oshibku-bootmgr-is-missing-bootmgr-is-missing---chto-delat-i-kak.html" rel="bookmark" title="Bootmgr está ausente - o que fazer e como corrigir?">Bootmgr está ausente - o que fazer e como corrigir?</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-otklyuchit-rekomendacii-na-xiaomi-redmi-kak-ubrat-rekomendacii-na-xiaomi-kak.html" rel="bookmark" title="Como remover recomendações sobre Xiaomi Como desabilitar recomendações em pastas Xiaomi"><img width="218" height="150" class="entry-thumb" src="/uploads/e087307848972b7c2c1b1312f967bb49.jpg" alt="Como remover recomendações sobre Xiaomi Como desabilitar recomendações em pastas Xiaomi" title="Como remover recomendações sobre Xiaomi Como desabilitar recomendações em pastas Xiaomi"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-otklyuchit-rekomendacii-na-xiaomi-redmi-kak-ubrat-rekomendacii-na-xiaomi-kak.html" rel="bookmark" title="Como remover recomendações sobre Xiaomi Como desabilitar recomendações em pastas Xiaomi">Como remover recomendações sobre Xiaomi Como desabilitar recomendações em pastas Xiaomi</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/otklyuchaem-prilozheniya-na-xiaomi-otklyuchaem-prilozheniya-na-xiaomi-kak-ubrat-rekomendacii-na-xiaomi.html" rel="bookmark" title="Desligue os aplicativos no Xiaomi Como remover as recomendações sobre Xiaomi"><img width="218" height="150" class="entry-thumb" src="/uploads/ffbf2375d740432da932301d7ef89701.jpg" alt="Desligue os aplicativos no Xiaomi Como remover as recomendações sobre Xiaomi" title="Desligue os aplicativos no Xiaomi Como remover as recomendações sobre Xiaomi"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/otklyuchaem-prilozheniya-na-xiaomi-otklyuchaem-prilozheniya-na-xiaomi-kak-ubrat-rekomendacii-na-xiaomi.html" rel="bookmark" title="Desligue os aplicativos no Xiaomi Como remover as recomendações sobre Xiaomi">Desligue os aplicativos no Xiaomi Como remover as recomendações sobre Xiaomi</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kak-udalit-programmu-ppt-kak-udalit-assist-point-reklamnoe-po-deinstallyaciya.html" rel="bookmark" title="Como remover o ponto de assistência (software de publicidade)"><img width="218" height="150" class="entry-thumb" src="/uploads/21155cb3a608bf5259a97199101fa6b7.jpg" alt="Como remover o ponto de assistência (software de publicidade)" title="Como remover o ponto de assistência (software de publicidade)"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kak-udalit-programmu-ppt-kak-udalit-assist-point-reklamnoe-po-deinstallyaciya.html" rel="bookmark" title="Como remover o ponto de assistência (software de publicidade)">Como remover o ponto de assistência (software de publicidade)</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_12_5a23980e79990_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_12_5a23980e79990" > <div class="td-block-title-wrap"></div><div id=td_uid_12_5a23980e79990 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/vybor-ustroistva-zagruzki-hp-kak-popast-v-boot-menu-na-kompyuterah.html" rel="bookmark" title="Como entrar no menu de inicialização em computadores e laptops"><img width="218" height="150" class="entry-thumb" src="/uploads/3670f3d84fb737ad5b2d8e2b0e77b471.jpg" alt="Como entrar no menu de inicialização em computadores e laptops" title="Como entrar no menu de inicialização em computadores e laptops"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/vybor-ustroistva-zagruzki-hp-kak-popast-v-boot-menu-na-kompyuterah.html" rel="bookmark" title="Como entrar no menu de inicialização em computadores e laptops">Como entrar no menu de inicialização em computadores e laptops</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/otklyuchenie-programm-zapuskayushchihsya-pri-vklyuchenii-kompyutera-kak-otklyuchit.html" rel="bookmark" title="Como desativar o download do Skype quando você ligar o computador Como desativar o lançamento automático do programa no Windows"><img width="218" height="150" class="entry-thumb" src="/uploads/d645777dcaa642ed7f9ce61f69842bab.jpg" alt="Como desativar o download do Skype quando você ligar o computador Como desativar o lançamento automático do programa no Windows" title="Como desativar o download do Skype quando você ligar o computador Como desativar o lançamento automático do programa no Windows"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/otklyuchenie-programm-zapuskayushchihsya-pri-vklyuchenii-kompyutera-kak-otklyuchit.html" rel="bookmark" title="Como desativar o download do Skype quando você ligar o computador Como desativar o lançamento automático do programa no Windows">Como desativar o download do Skype quando você ligar o computador Como desativar o lançamento automático do programa no Windows</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/programma-dlya-veb-kamery-zveri-programmy-dlya-veb-kamery-podderzhka.html" rel="bookmark" title="Programas para webcam."><img width="218" height="150" class="entry-thumb" src="/uploads/c2460513e2748a35852e53c30a20ea20.jpg" alt="Programas para webcam." title="Programas para webcam."/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/programma-dlya-veb-kamery-zveri-programmy-dlya-veb-kamery-podderzhka.html" rel="bookmark" title="Programas para webcam.">Programas para webcam.</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/programma-aeroflot-bonus-kak-nakopit-mili-i-na-chto-ih-mozhno.html" rel="bookmark" title="Certificado de Presente Virtual Aeroflot: Dar a viagem Dreams Aeroflot Certificados"><img width="218" height="150" class="entry-thumb" src="/uploads/9844c7fc2362fa47c1d139a522136b7c.jpg" alt="Certificado de Presente Virtual Aeroflot: Dar a viagem Dreams Aeroflot Certificados" title="Certificado de Presente Virtual Aeroflot: Dar a viagem Dreams Aeroflot Certificados"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/programma-aeroflot-bonus-kak-nakopit-mili-i-na-chto-ih-mozhno.html" rel="bookmark" title="Certificado de Presente Virtual Aeroflot: Dar a viagem Dreams Aeroflot Certificados">Certificado de Presente Virtual Aeroflot: Dar a viagem Dreams Aeroflot Certificados</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/lichnyi-kabinet-yves-rocher-lichnyi-kabinet-yves-rocher-nomer-klienta-iv.html" rel="bookmark" title="Gabinete Pessoal Yves Rocher Cliente Número Yves Rocher Onde"><img width="218" height="150" class="entry-thumb" src="/uploads/0eeb82e0ed093b2d9e32146f5ae7b359.jpg" alt="Gabinete Pessoal Yves Rocher Cliente Número Yves Rocher Onde" title="Gabinete Pessoal Yves Rocher Cliente Número Yves Rocher Onde"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/lichnyi-kabinet-yves-rocher-lichnyi-kabinet-yves-rocher-nomer-klienta-iv.html" rel="bookmark" title="Gabinete Pessoal Yves Rocher Cliente Número Yves Rocher Onde">Gabinete Pessoal Yves Rocher Cliente Número Yves Rocher Onde</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/promokod-na-skidku-aliekspress-kupony-i-skidki-aliexpress-kakie-byvayut.html" rel="bookmark" title="Aliexpress cupons e descontos"><img width="218" height="150" class="entry-thumb" src="/uploads/b351702bb733f97819b44322252c98ff.jpg" alt="Aliexpress cupons e descontos" title="Aliexpress cupons e descontos"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/promokod-na-skidku-aliekspress-kupony-i-skidki-aliexpress-kakie-byvayut.html" rel="bookmark" title="Aliexpress cupons e descontos">Aliexpress cupons e descontos</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_13_5a23980e7caa8_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_13_5a23980e7caa8" > <div class="td-block-title-wrap"></div><div id=td_uid_13_5a23980e7caa8 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/akciya-na-registracii-voditelyam-taksi-maksim-promokody-i-skidki-taksi.html" rel="bookmark" title="Promocional e descontos taxi Maxim"><img width="218" height="150" class="entry-thumb" src="/uploads/934c3dc74568a87f358c7f4602b65fab.jpg" alt="Promocional e descontos taxi Maxim" title="Promocional e descontos taxi Maxim"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/akciya-na-registracii-voditelyam-taksi-maksim-promokody-i-skidki-taksi.html" rel="bookmark" title="Promocional e descontos taxi Maxim">Promocional e descontos taxi Maxim</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/promokod-mts-avgust-kody-na-skidku-mts-pravila-ispolzovaniya.html" rel="bookmark" title="Promotora mts agosto. Códigos para um desconto "MTS. Regras de Uso do PromkhoDod"><img width="218" height="150" class="entry-thumb" src="/uploads/677c10aaef57bb15b8337eaa77aaa08f.jpg" alt="Promotora mts agosto. Códigos para um desconto "MTS. Regras de Uso do PromkhoDod" title="Promotora mts agosto. Códigos para um desconto "MTS. Regras de Uso do PromkhoDod"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/promokod-mts-avgust-kody-na-skidku-mts-pravila-ispolzovaniya.html" rel="bookmark" title="Promotora mts agosto. Códigos para um desconto "MTS. Regras de Uso do PromkhoDod">Promotora mts agosto. Códigos para um desconto "MTS. Regras de Uso do PromkhoDod</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/promokod-emireits-dekabr-promokody-emirates-bonusy-i-promokody.html" rel="bookmark" title="Promocódigo emirados dezembro."><img width="218" height="150" class="entry-thumb" src="/uploads/6340d41677a105c1fb30242cc1f224c7.jpg" alt="Promocódigo emirados dezembro." title="Promocódigo emirados dezembro."/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/promokod-emireits-dekabr-promokody-emirates-bonusy-i-promokody.html" rel="bookmark" title="Promocódigo emirados dezembro.">Promocódigo emirados dezembro.</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/kody-dlya-stima-kak-aktivirovat-kuplennyi-klyuch-v-steam-kak-snova.html" rel="bookmark" title="Como ativar a chave comprada no Steam"><img width="218" height="150" class="entry-thumb" src="/uploads/1730a2cdb84a94077f90738f6373b22a.jpg" alt="Como ativar a chave comprada no Steam" title="Como ativar a chave comprada no Steam"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/kody-dlya-stima-kak-aktivirovat-kuplennyi-klyuch-v-steam-kak-snova.html" rel="bookmark" title="Como ativar a chave comprada no Steam">Como ativar a chave comprada no Steam</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/promokod-onetwotrip-iyul-promokody-i-skidki-onetwotrip-promokody-dlya-van-tu.html" rel="bookmark" title="Promocionais e descontos onetrip"><img width="218" height="150" class="entry-thumb" src="/uploads/5589359d25051bcf6eb8e9aee00e6289.jpg" alt="Promocionais e descontos onetrip" title="Promocionais e descontos onetrip"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/promokod-onetwotrip-iyul-promokody-i-skidki-onetwotrip-promokody-dlya-van-tu.html" rel="bookmark" title="Promocionais e descontos onetrip">Promocionais e descontos onetrip</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="https://obanracer.ru/pt/promokody-shefmarket-promokody-shefmarket-kak-ispolzovat-promokody-na.html" rel="bookmark" title="SchastMarket promocional Como usar os promocodies para CheeFMarket"><img width="218" height="150" class="entry-thumb" src="/uploads/e35734c15b27c8f38af68d2671626259.jpg" alt="SchastMarket promocional Como usar os promocodies para CheeFMarket" title="SchastMarket promocional Como usar os promocodies para CheeFMarket"/ loading=lazy loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="https://obanracer.ru/pt/promokody-shefmarket-promokody-shefmarket-kak-ispolzovat-promokody-na.html" rel="bookmark" title="SchastMarket promocional Como usar os promocodies para CheeFMarket">SchastMarket promocional Como usar os promocodies para CheeFMarket</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside> </div> </div> </div> </div> <div class="td-sub-footer-container td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span td-sub-footer-menu"> </div> <div class="td-pb-span td-sub-footer-copy"> Copyright 2021 - Reparação de computadores e laptops. Placas de vídeo, discos rígidos, Internet, monitores.</div> </div> </div> </div> </div> <style type="text/css" media="screen"> /* custom css theme panel */ .td-post-header .entry-title { font-weight: normal !important; } h1.entry-title { font-weight: normal !important; border-bottom:#c44c4c 2px dotted; } h1.entry-title:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .sf-menu ul .td-menu-item > a:hover, .sf-menu ul .sfHover > a, .sf-menu ul .current-menu-ancestor > a, .sf-menu ul .current-category-ancestor > a, .sf-menu ul .current-menu-item > a { color: #edf3f7; } .td-post-content h2 { border-bottom:#c44c4c 2px dotted;} .td-post-content h2:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-post-content h3 { border-bottom:#c44c4c 2px dotted;} .td-post-content h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .category-my .td-page-title { color:#c44c4c; font-weight: 400; font-size: 36px; } .post header .entry-title { line-height: 40px; } .td-category-description h2, .td-category-description h3 { color:#c44c4c;} .td-category-description h2 { border-bottom:#c44c4c 2px solid;} .td-category-description h2:before { content: "\f055"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description h3 { border-bottom:#c44c4c 2px solid;} .td-category-description h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description ol, .td-category-description ul { margin-top:20px !important; margin-bottom:20px !important;} .td-category-description ul, .td-post-content ul { padding:0; margin:0; list-style:none; clear:both;} .td-category-description ul li, .td-post-content ul li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ul li:before, .td-post-content ul li:before { content: "\f192"; font-family: "FontAwesome"; color:#c44c4c; position:absolute; left:-10px;} .td-category-description ol, .td-post-content ol { padding:0; margin:0 0 0 5px; list-style:none; counter-reset: lipoint; clear:both;} .td-category-description ol li, .td-post-content ol li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ol li:before, .td-post-content ol li:before { content: counter(lipoint); counter-increment: lipoint; color:#fff; position:absolute; left:-16px; background:#c44c4c; width:20px; height:20px; line-height:20px; text-align:center; -webkit-border-radius: 20px;border-radius: 20px; font-size:12px; top:3px;} .toc_list li:before { display:none} .td-header-style-9 .td-header-menu-wrap-full { /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#c44c4c+0,c10000+100 */ background: #c44c4c; /* Old browsers */ background: -moz-linear-gradient(top, #c44c4c 0%, #c10000 100%); /* FF3.6-15 */ background: -webkit-linear-gradient(top, #c44c4c 0%,#c10000 100%); /* Chrome10-25,Safari5.1-6 */ background: linear-gradient(to bottom, #c44c4c 0%,#c10000 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c44c4c', endColorstr='#c10000',GradientType=0 ); /* IE6-9 */ } .sf-menu > li > a { color: #fff; } .td-header-style-9 .header-search-wrap .td-icon-search { color: #fff; } .td-affix a { color:#000 !important;} </style> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll":"1"} ; /* ]]> */ </script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/wp-postratings/js/postratings-js.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/themes/Newspaper/js/tagdiv_theme.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var boxzilla_options = { "testMode":"","boxes":[]} ; /* ]]> */ </script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/boxzilla/assets/js/script.min.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.core.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.view.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/themes/baseline/js/prod/client.js'></script> <script type='text/javascript' src='/assets/client1.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/template-tags/item/js/prod/tag.item.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/template-tags/ui/js/prod/tag.ui.js'></script> <script type='text/javascript' src='https://obanracer.ru/wp-content/plugins/simple-lightbox/content-handlers/image/js/prod/handler.image.js'></script> <script> (function(){ var html_jquery_obj = jQuery('html'); if (html_jquery_obj.length && (html_jquery_obj.is('.ie8') || html_jquery_obj.is('.ie9'))) { var path = '/wp-content/themes/Newspaper/style.css'; jQuery.get(path, function(data) { var str_split_separator = '#td_css_split_separator'; var arr_splits = data.split(str_split_separator); var arr_length = arr_splits.length; if (arr_length > 1) { var dir_path = '/wp-content/themes/Newspaper'; var splited_css = ''; for (var i = 0; i < arr_length; i++) { if (i > 0) { arr_splits[i] = str_split_separator + ' ' + arr_splits[i]; } //jQuery('head').append('<style>' + arr_splits[i] + '</style>'); var formated_str = arr_splits[i].replace(/\surl\(\'(?!data\:)/gi, function regex_function(str) { return ' url(\'' + dir_path + '/' + str.replace(/url\(\'/gi, '').replace(/^\s+|\s+$/gm,''); } ); splited_css += "<style>" + formated_str + "</style>"; } var td_theme_css = jQuery('link#td-theme-css'); if (td_theme_css.length) { td_theme_css.after(splited_css); } } } ); } } )(); </script> </body> </html>