Ir para conteúdo
Fórum Script Brasil

Graymalkin

Veteranos
  • Total de itens

    8.257
  • Registro em

  • Última visita

Tudo que Graymalkin postou

  1. Olá, Eu reparei os seguintes erros: 1) Se são 40 alunos na turma, você deveria fazer o "enquanto" com o contador (que é utilizado incorretamente em outra parte do algoritmo): contador<-0 enquanto contador<40 faca ... // Restante do código contador <- contador + 1 fimenquanto A parte incorreta é essa (que deve ser removida): contador<-nome+1 2) Você não precisa repetir a leitura dos dados (nome, notas e faltas) no começo e no final do enquanto, basta apenas no começo no caso do "enquanto". Do jeito que está, ele pedirá os dados do primeiro aluno, mostrará os resultados, e pedirá os dados do segundo e terceiro alunos, mostrando então os dados apenas do terceiro (o segundo, que é lido no final do "enquanto" será ignorado). 3) Você usa uma variável chamada "notafinal" para calcular a aprovação, porém não faz o cálculo para atribuir à mesma (que é o cálculo da média, então a variável "media" nem seria necessária): Leia (faltas) notafinal <- (n1+n2+n3)/3 Se (notafinal >= 7) então 4) E, por último, essa ordem dos "se"s que determinam a aprovação/reprovação. Eu trabalho em uma escola (na secretaria da escola), então para a minha geração dos boletins, é muito importante essa ordem. No seu algoritmo é tratado independentemente a reprovação por média e falta. Ou seja, o mesmo aluno poderá receber as mensagens de que foi aprovado (pela média) e de que foi reprovado (pelas faltas), ou vice-versa, quando na verdade ele deveria receber apenas a informação de que foi aprovado quando for em ambos os casos (média e faltas). Portanto, essa parte seria: Se (faltas <=10) então Escreval (nome, " reprovado com " ,faltas," faltas") Senao Se (notafinal >= 7) então Escreval (nome," aprovado com média ",notafinal:2:2) Senao Escreval (nome," reprovado por média ",notafinal:2:2) Fimse Fimse Repare que primeiro olhamos se ele ficou reprovado pelas faltas (pois não importa a média, uma vez que ele já ficou pelas faltas), e caso contrário, olhamos então a média. Falou? Abraços!
  2. Geralmente o conteúdo do e-mail vem codificado em Base64. Você está usando o VB.net ou VB6? Se for VB.net você pode usar a biblioteca OpenPop (http://hpop.sourceforge.net/) para abrir o arquivo EML e extrair o que desejar (cabeçalho, corpo, anexos, etc.). Se for o VB6, dê uma olhada neste tutorial: http://www.emailarchitect.net/eagetmail/kb/vb.aspx?cat=11 Abraços!
  3. Você pode usar o pg_dump e o pg_restore que acompanham o próprio PostgreSQL, para passar um banco inteiro de um servidor para outro. Ou, pode usar o comando COPY para exportar e importar tabelas. Abraços!
  4. Olá, Barboza No caso da 1a pergunta, acho que posso ajudar. Se me lembro bem, você pode fazer o seguinte para ativar o log do PostgreSQL: 1) abra o arquivo "postgresql.conf", que fica na sua pasta "data" (no Bloco de Notas mesmo); 2) desça até a seção "ERROR REPORTING AND LOGGING"; 3) Nesta seção descomente (retire o # da frente da linha) e/ou altere as seguintes linhas (não sei ao certo quais vêm comentadas originalmente): logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_line_prefix = '%t %u ' log_statement = 'mod' 4) Após alterar estas linhas, salve o arquivo; 5) pare e inicie o serviço do PostgreSQL. Os logs ficarão dentro da pasta "pg_log" (dentro da sua pasta "data"), armazenados por dia. Faça o teste aí e veja se dá certo. Tem muito tempo que habilitei esse log aqui em um dos servidores, então não me recordo se tem algo mais pra mudar, mas eu acho que só isso mesmo. Abraços!
  5. Sim, tem que instalar um servidor assim como o MySQL. Mas é bem prático e, devidamente configurado, você poderá acessar o banco de dados através da internet. Abraços!
  6. Particularmente eu gosto do PostgreSQL, onde tenho tabelas com mais de 600 mil registros e a consulta é super rápida, além de ser de fácil instalação e manutenção. Porém, uso com o VB 2010/2012 e não com o VB6. Abraços!
  7. No primeiro exemplo o problema é a identação (o recuo na frente do texto indicando o escopo do for): for p in range(9,13): print 'US$ %5.2f = R$ %5.2f' % (p, p * d) print '-' * 20 Como a linguagem Python não possui delimitadores como chaves ({}) ou o next, a identação é muito importante. Abraços!
  8. Acredito que o problema está em usar o print (que escreve no console) ao invés do f.write() (que escreve no arquivo): f = open('teste.xml', 'w') f.write('<?xml version="1.0" encoding="UTF-8"?>\n') i = 0 if not Rs.EOF: Rs.MoveFirst() while not Rs.EOF: nome = Rs.Fields.Item('nomeproduto').Value desc = Rs.Fields.Item('brevedescricao').Value f.write('<nome>'+nome+'</nome>') Rs.MoveNext() else: print u"\nNao encontrei nada ..." f.close() Abraços, Graymalkin
  9. Bom, eu uso estas duas funções: Public Function ToImage(ByVal bytes() As Byte) As Image Dim memarq As New IO.MemoryStream(bytes) Dim img As Image Try img = Image.FromStream(memarq) Catch ex As Exception img = Nothing End Try memarq.Close() Return img End Function Public Function ToBytes(ByVal img As Image) As Byte() Dim memarq As New IO.MemoryStream() Dim nimg As New Bitmap(img) nimg.Save(memarq, System.Drawing.Imaging.ImageFormat.Jpeg) memarq.Seek(0, IO.SeekOrigin.Begin) Dim bytes(memarq.Length) As Byte memarq.Read(bytes, 0, memarq.Length) memarq.Close() Return bytes End Function A primeira converte uma sequência de bytes para uma imagem (para "ler" a imagem) e a outra faz o inverso (para "gravar" a imagem). Veja se dá certo aí para você. Abraços, Graymalkin
  10. Você pode criar uma função para isso: CREATE OR REPLACE FUNCTION "Calcular"(e1 integer, pack integer) RETURNS integer AS 'SELECT $1-($1/$2)*$2;' LANGUAGE 'sql'; Daí, basta utilizá-la: SELECT "Calcular"(3500, 200); Abraços, Graymalkin
  11. Dê uma olhada na função EXTRACT, pois acho que é o que você precisa: http://www.postgresql.org/docs/current/sta...ATETIME-EXTRACT Abraços, Graymalkin
  12. Sim, sempre foi possível usando CGI (Common Gateway Interface). Mas se você refere-se a utilização do C/C++ usando ASP.NET, dê uma olhada neste tutorial: http://www.codeproject.com/KB/mcpp/helloworldmc.aspx Abraços, Graymalkin
  13. Graymalkin

    Duvida VB 2008

    Acho que o que você quer é mais ou menos isso: Dim sTexto As String = "beep(10)" Dim função As String = "beep" Dim posfunc As Integer = sTexto.IndexOf(função) Dim parâm As Integer = 0 If posfunc >= 0 Then Dim posp1 As Integer = sTexto.IndexOf("(", posfunc) If posp1 >= 0 Then Dim posp2 As Integer = sTexto.IndexOf(")", posp1) If Integer.TryParse(sTexto.Substring(posp1 + 1, posp2 - posp1 - 1), parâm) Then For i As Integer = 1 To parâm Beep() Next End If End If End If Em "sTexto" está o código e a função a ser procurada é "beep". Depois de achada, procura-se o "(" depois dela e depois deste procura-se o ")". No final pega-se o que está entre os dois e tenta-se converter para inteiro e caso tenha sucesso será executado o beep o tanto de vezes descrito. Abraços, Graymalkin
  14. Não sei se entendi bem o que você quer, mas para percorrer os caracteres de uma string você pode fazer: Dim texto As String = TextBox1.Text For Each c As Char In texto MessageBox.Show(c) Next c No lugar de mostrar o caracter (MessageBox.Show©) você pode fazer o que quiser com ele (como comparar e atribuir a outra variável). Abraços, Graymalkin
  15. Nesta linha você está chamando um método chamado errorMessage que não existe no seu programa. Você poderia tentar substituir esta linha por: Console.Write("Erro: " + ex.Message); Abraços, Graymalkin
  16. O valor que você está tentando escrever na verdade é uma tupla e não apenas uma string. Repare que tem uma vírgula depois da string e que o valor está entre parênteses. Note a diferença: >>> x = (u'teste', ) >>> print x (u'teste',) >>> x = u'teste' >>> print x teste Então, você quer realmente é imprimir apenas o primeiro elemento desta tupla, o que pode ser feito assim: >>> x = (u'teste', ) >>> print x[0] teste Certo? Abraços, Graymalkin
  17. Graymalkin

    erro select

    Quando as colunas são criadas com a inicial maiúscula você precisa usar as aspas duplas para referenciá-las. Se você faz: SELECT Nome, ... É a mesma coisa que... SELECT nome, ... ..., por isso você precisa fazer: SELECT "Nome", ... Abraços, Graymalkin
  18. Eu nunca tentei assim externamente, mas aqui no meu PG_HBA.CONF as linhas de configuração não aparecem com dois IPs e sim com apenas um seguido da / e da quantidade de bits que representam a máscara do endereço. Dê uma olhada se não é isso. Abraços, Graymalkin
  19. É, também não sei se ainda precisa, mas você poderia usar a função len() para calcular o tamanho da string ao invés de ter aquele segundo loop. Abraços, Graymalkin
  20. Não seria só usar self.nome_text.Value? Abraços, Graymalkin
  21. Veja se em IncluirEnquete tem alguma chamada ao método Substring() e poste aqui esta linha para podermos analisar melhor. Abraços, Graymalkin
  22. Graymalkin

    (Resolvido) Strings

    Ah tá, não tinha reparado que você estava usando o VS2005. Nesse caso, substitua o Count por Length. Abraços, Graymalkin
  23. Graymalkin

    (Resolvido) Strings

    O seu Windows deve ser o Vista, né? Ele costuma fazer algumas proibições quanto às raízes das unidades. Bom, mas faça o seguinte aí: 1) Coloque uma ProgressBar no form com o nome de PB; 2) Coloque uma Label no form com o nome lblDiret; 3) Coloque um botão no form (com qualquer nome); 4) Cole a seguinte função dentro da classe do form: Public Function ObterArquivos(ByVal dir As String, Optional ByVal filtro As String = "*.*") As List(Of IO.FileInfo) Dim d As New IO.DirectoryInfo(dir) Dim subdiretórios() As IO.DirectoryInfo = Nothing Try subdiretórios = d.GetDirectories() Catch ex As Exception 'ocorreu algum erro de acesso, então ignoramos End Try Dim retorno As New List(Of IO.FileInfo)() Try retorno.AddRange(d.GetFiles(filtro, IO.SearchOption.TopDirectoryOnly)) Catch ex As Exception 'ocorreu algum erro de acesso, então ignoramos End Try If subdiretórios IsNot Nothing Then PB.Maximum += subdiretórios.Count For Each subdiretório As IO.DirectoryInfo In subdiretórios lblDiret.Text = subdiretório.FullName PB.Increment(1) Application.DoEvents() retorno.AddRange(ObterArquivos(subdiretório.FullName, filtro)) Next End If Return retorno End Function 5) Coloque o seguinte código no evento Click do botão: Dim arqs As List(Of IO.FileInfo) = ObterArquivos("c:\") For Each arq As IO.FileInfo In arqs Debug.Print(arq.FullName) Next Desta maneira você poderá ver o progresso da obtenção dos nomes dos arquivos. Note que será gerada uma lista imensa nesse caso (no meu aqui deu mais de 85000 arquivos) que depois será exibida na janela Immediate. Certo? ;) Graymalkin
  24. Se não me engano é a propriedade Modifiers que controla isso. Experimente alterá-la para Public ou Protected e veja se dá certo. Abraços, Graymalkin
  25. Graymalkin

    (Resolvido) Strings

    Se você colocar o SearchAllSubDirectories realmente vai travar e levar um bom tempo... porque imagine pegar o nome de *todos* os arquivos partindo do C: e buscando em todos os subdiretórios? Use FileIO.SearchOption.SearchTopLevelOnly no lugar para pegar somente os arquivos existentes na raíz do diretório informado. Abraços, Graymalkin
×
×
  • Criar Novo...