-
Total de itens
8.257 -
Registro em
-
Última visita
Tudo que Graymalkin postou
-
Sim, mas se você declará-la sem um tamanho inicial, você pode redimensioná-la: Dim matriz() Dim indices As Integer indices = 100 ReDim matriz(indices) Certo? Graymalkin
-
O que você espera obter dessa propriedade? Ela chama um método que vai retornar um valor (uma string), porém esse retorno está dentro de um loop (que aparenta que vai retornar vários valores, apesar disso não ser possível dessa forma). Graymalkin
-
Aqui... a = (linha(coluna)) ... o que estará em "a"? Uma string com um valor hexadecimal (por exemplo, "A3"). Você precisa converter esse "A3" para o decimal 163 e daí gravar com o método write do BinaryWriter. Acho que a função System.Uri.HexUnescape() pode lher ser útil nesse caso. Certo? Graymalkin
-
VB e Delphi não são exatamente procedurais (procedurais seriam C, Clipper e Pascal, por exemplo). Minha sugestão seria que você pelo menos iniciasse em ambas e visse qual lhe oferece melhor adaptação (apesar de crer piamente que Python vai ser muito mais bem-vista, nesse sentido, do que Java). Não tenho uma fonte interessante de Java, mas de Python sim: http://www.pythonbrasil.com.br/. Nesse site você encontrará tutoriais e dicas sobre Python (no nosso idioma). Certo? Graymalkin
-
Ambas as sugestões aqui já apresentadas fazem isso (o componente MAPI e a função ShellExecute). Abraços, Graymalkin
-
Orientação A Objeto
pergunta respondeu ao Denis Bittencourt Muniz de Graymalkin em Outras Linguagens de Programação
Beleza. Não, até que não. O VB6 tem propriedades padrões, o que permitia algo parecido com isso. E, acredito eu que a sobrecarga do operador de atribuição (=), disponível em C++, também possa realizar algo do tipo (mas, nunca vi isso em prática, por isso apenas "acho"). Abraços, Graymalkin -
Cada controle tem um método chamado Focus() que é o antigo SetFocus() do VB6. Abraços, Graymalkin
-
Beleza então. Fechando. Graymalkin
-
Sinceramente, não entendi então qual é o problema... Se você queria testar se o F5 foi pressionado de forma que não tivesse que sair colocando isso em todos os forms, e sim apenas no que fica aberto o tempo todo (o principal), então bastaria ligar a propriedade KeyPreview e realizar o teste lá, uma vez que essa propriedade faz com que o teste seja primeiro realizado no form onde está ligada e depois no form que se encontra ativo. Qual seria o problema então? Abraços, Graymalkin
-
Acredito que seria isso aqui: Dim bmp As Bitmap = PictureBox1.Image bmp.SetPixel(e.X, e.Y, Color.Red) Certo? Graymalkin PS: temos uma sala do fórum dedicada apenas a .NET e essa pergunta poderia ter sido postada lá, não acha?
-
Escreve na janela de depuração (Debug), localizada na parte inferior direita da tela (quando o programa está sendo executado). Abraços, Graymalkin
-
Aí vai um exemplo de como percorrer a DataGrid obtendo seus itens: Dim dt As DataTable = dgHexa.DataSource For Each linha As DataRow In dt.Rows For Each coluna As DataColumn In dt.Columns Debug.WriteLine(linha(coluna)) Next Next Certo? Graymalkin
-
Experimente ligar a propriedade KeyPreview do form principal e utilizar o seu evento OnKeyDown para fazer o teste. Abraços, Graymalkin
-
Experimente assim: WinExec(PChar('cmd.exe /c \\' + caminho.Text +'\hd\'),SW_NORMAL) Mast, tem certeza de que isso serve para mapear? Não seria o "net use"? Abraços, Graymalkin
-
Orientação A Objeto
pergunta respondeu ao Denis Bittencourt Muniz de Graymalkin em Outras Linguagens de Programação
Sim, tem. Tanto que em VB temos o encapsulamento, por exemplo, que é uma característica OO (coisa não presente nas ditas "convencionais"). São tipos complexos que podem ter membros (atributos). Em C, por exemplo, pode-se fazer o seguinte: struct Pessoa { char* nome; int idade; }; Depois podemos declarar variáveis com esse tipo: Pessoa p1; p1.nome = "Junior"; p1.idade = 21; Em VB6 pode-se fazer a mesma coisa com a instrução Type... End Type (no VB.NET ela passou a ser Structure... End Structure). Não, só os tipos definidos pelo usuário é que poderiam chegar mais-ou-menos (mais pra menos) perto do encapsulamento, mas não acredito que isso possa ser levado em consideração. Certo. Porque valores também são objetos. Experimente escrever no Visual Studio... messagebox.show((25). ... e você vai ver que depois do ponto aparecerão os métodos relativos a um inteiro. O mesmo vale para Char, String, Double, Boolean, Decimal, etc. Veja o seguinte exemplo (VB.NET): MessageBox.Show((3).GetType().ToString()) MessageBox.Show((3.141516).GetType().ToString()) MessageBox.Show(("um teste").GetType().ToString()) MessageBox.Show(("a"c).GetType().ToString()) MessageBox.Show((True).GetType().ToString()) MessageBox.Show((10.34D).GetType().ToString()) Não necessariamente, conforme o que eu disse acima. Porque nesse caso você estaria querendo atribuir uma *string* a um objeto do tipo *TextBox*. Do mesmo jeito que para um objeto inteiro você só pode atribuir um inteiro, para um objeto do tipo TextBox você só pode atribuir um objeto TextBox. Ou seja, fazer... textbox1 = new TextBox(); ... é perfeitamente possível (aqui os tipos estão corretos). Apesar de diferente, muito interessante, não acham? Você sabe qual é a vantagem nesse recurso do SmallTalk.? Não programo em SmallTalk, por isso não posso ressaltar qual seria exatamente a *vantagem* nisso. Ultimamente não tenho tido muito tempo para pesquisar sobre outras linguagens fora as que utilizo, mas assim que possível vou pesquisar sobre isso. Abraços, Graymalkin -
Procure por essa função aqui no fórum e você encontrará a declaração dela. Abraços, Graymalkin
-
Beleza. Qualquer coisa, 'stamos aí. Abraços, Graymalkin
-
Assim: dim f as new IO.StreamWriter("c:\teste.txt") f.Write(textbox1.text) f.Close() Certo? Graymalkin
-
Você pode estabelecer valores para indicar isso. Por exemplo, todas as cadeiras disponíveis tem valor 0 e todas as ocupadas tem valor 1. Daí, bastaria acessar a posição no vetor correspondente ao lugar que o passageiro deseja e verificar se lá está 0 ou 1. Se estiver 0, o cliente vai ficar com esse lugar mesmo (que vai passar a ser 1), e se estiver 1, o cliente deverá escolher outro lugar. Certo? Graymalkin
-
Um vetor não é nada mais que uma variável que possui um nome comum e índices que podem variar. Um exemplo: int numeros[5]; for (int i=0; i<5; i++) { printf("Digite um número: "); scanf("%i", &numeros[i]); } for (int i=0; i<5; i++) { printf("\nNúmero digitado: %i", numeros[i]); } system("pause"); Já da pra ter uma idéia? E, é em C ou C++ que você deve fazer? Abraços, Graymalkin
-
Você pelo menos começou a fazer? Caso positivo, o que exatamente você não conseguiu fazer? Abraços, Graymalkin
-
Você conseguiu resolver? Se não, a linha abaixo... tabela = comando.ExecuteReader ... não deveria ser... tabela = comando.ExecuteReader() ...? Não sei se o VB se importaria realmente com isso, mas o correto seria o segundo. E, outra pergunta, tem algum AddressOf em qualquer outra parte do código? Abraços, Graymalkin
-
Beleza! Abraços, Graymalkin
-
Ok. Vamos lá! Exato. A variável "cada" é do tipo Double, ou seja, ela vai guardar um número de ponto flutuante, não um tempo. Se em minutos ficou 290 e existem 4 horários (horários.Count), o total armazenado em "cada" será 72,5 (ou seja, 290 / 4). Porque são os minutos que temos, no caso, 72,5. Vai tirar aproximadamente 01:12:00 (o que são exatamente os 72 minutos acima, já que o 0,5 some porque o parâmetro passado tem que ser um inteiro). Esclarecido agora? Qualquer coisa, pergunta aí de novo que eu explico melhor. Abraços, Graymalkin
-
Fiz um exemplo aqui pra ti: Dim horários As New ArrayList ' Hora de entrada Hora de saída horários.Add(New TimeSpan() {New TimeSpan(7, 0, 0), New TimeSpan(10, 32, 0)}) horários.Add(New TimeSpan() {New TimeSpan(12, 0, 0), New TimeSpan(14, 50, 0)}) horários.Add(New TimeSpan() {New TimeSpan(16, 12, 0), New TimeSpan(19, 52, 0)}) horários.Add(New TimeSpan() {New TimeSpan(21, 0, 0), New TimeSpan(23, 48, 0)}) Dim inicial, final, subtotal, total As TimeSpan total = New TimeSpan(0, 0, 0) For Each horário As TimeSpan() In horários inicial = horário(0) final = horário(1) subtotal = final.Subtract(inicial) total = total.Add(subtotal) Debug.WriteLine(String.Format("Horário original: {0} -> {1}", inicial, final)) Next Debug.WriteLine("Total original: " & total.ToString()) Dim máximo As New TimeSpan(8, 0, 0) If total.CompareTo(máximo) > 0 Then Dim diferença As TimeSpan = total.Subtract(máximo) Dim minutos As Double = diferença.TotalMinutes Dim cada As Double = minutos / horários.Count For Each horário As TimeSpan() In horários 'mudando a hora final, retirando o excedente horário(1) = horário(1).subtract(New TimeSpan(0, cada, 0)) Next End If total = New TimeSpan(0, 0, 0) For Each horário As TimeSpan() In horários inicial = horário(0) final = horário(1) subtotal = final.Subtract(inicial) total = total.Add(subtotal) Debug.WriteLine(String.Format("Horário modificado: {0} -> {1}", inicial, final)) Next Debug.WriteLine("Novo total: " & total.ToString()) Veja os totais e os horários na janela de depuração. Você vai reparar que o novo total do exemplo acima vai dar 08:02:00, ou seja, vai passar dois minutos do máximo. Isso ocorre por que a divisão entre os minutos excedentes e o total de horários não é exata. Você pode arrendondar essa divisão (na variável "cada") utilizando Math.Ceiling(), ou fazer um novo loop daquele dividindo o excedente para os horários novamente e recalculando. Aí vai depender se pode ou não ter variações para cima e para baixo dos valores. Certo? Graymalkin