cgm2k7

Membros
  • Content Count

    11
  • Joined

  • Last visited

Community Reputation

0 Neutro

About cgm2k7

  1. olá boa noite a todos! Estou "tentando" desenvolver um jogo de luta em SDL2 c++, estou com o seguinte problema: tenho um loop 10 posição sendo que cada posição repete 4 EXEMPLO: na posição 0 repete 0 0 0 0 na posição 1 repete 1 1 1 1 e a sim por diante ate o numero 9, o que eu quero é que quando chegar em uma posição que eu escolher Exemplo: seu eu escolher a posição 1 execute uma ação mas somente o primeira vez que repetiu o numero 1 as outras vez que o numero 1 for repetido não execute nada. Não estou conseguindo resolver este problema não sei porque, sendo que já fiz coisa muito mais difício e complexa que isso, acho que não to pensando direito kkkk. veja um exemplo de loop... não este que estou usando não mais é parecido mesma logica. if (currentFrame == 9){ currentFrame = 0; }else{ if (slow == 4){ currentFrame++; slow = 0; } slow++ }
  2. Olá bom dia.. Estou aqui de novo precisando de ajuda... Estou com o seguinte problema: Com este código abaixo, Me possibilita arrastar do Explorer e adicionar em um ListBox. uses Winapi.ShellApi; type TMyform = class(TForm) ... protected procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES; ... end; procedure TMyform.WMDropFiles(var Message: TWMDropFiles); var numfiles: integer; buf: array[0..MAX_PATH] of char; begin numfiles := DragQueryFile(Message.Drop,$FFFFFFFF,nil,0); if numfiles>0 then begin Application.BringToFront; // only open 1 file at a time // - you could open more than 1 file // at a time by looping thru numfiles DragQueryFile(Message.Drop,0,buf,MAX_PATH); { call some method which opens the file - buf gets automatically typecast to a string if necessary } ListBox1.Items.Add(buf); DragFinish(Message.Drop); // clean up end; end; no formCreatte DragAcceptFiles(Handle, true); e no formDestroy DragAcceptFiles(Handle, false); o problema se eu executar o aplicar como administrador, não adiciona no listbox, isso só acontece no windows 10 já no windows 7 ultimate funcionar tudo normal. Será alguém aqui pode da uma ideia do que pode ser ?! Obrigado pela atenção...
  3. cgm2k7

    Criar aqruivo Binario

    olá pessoal bon dia! Venho aqui mais uma vez pedir ajuda... Estou criando um projeto, que preciso criar uma criar um arquivo binário com varais imagens dentro desse arquivo, e no cabeçalho desse arquivo tem que informar o tamanho de o inicio e fim de cada imagem. Exemplo de como ficaria o arquivo em hex: 89 44 41 54 87 22 00 00 3D 67 00 00 2C 89 00 00 os 1ª 4 caracteres seria o extensão do arquivo ".DAT" os 4 próximos seria o tamanho da imagem, e os 4 próximos seria o ponteiro de inicio da imagem, e os 4 próximo seria o ponteiro do fim da imagem... E assim com todas as imagens dentro desse arquivo.DATA https://ibb.co/ghj1WK https://www.imagemhost.com.br/image/2jf0B se alguém poder me ajuda desde já agradeço... em C puro
  4. cgm2k7

    OnChange Edit

    Olá o eu aqui de novo pendido ajuda: É o seguinte, tenho 3 edit: no OnChange do edit1 { edit2->Text = edit1->text; edit3->Text = edit1->text; } no OnChange do edit2 { edit1->Text = edit2->text; edit3->Text = edit2->text; } no OnChange do edit3 { edit1->Text = edit3->text; edit2->Text = edit3->text; } Quando usuário estiver digitando no edit1 sai no edit2 e edit3 como faço para não retornar para o edit1 se alguém pode me ajuda agradeço .
  5. sim e já consegui . Desculpas ae foi falta de atenção minha mesmo, muito coisa na cabeça aqui que não tava pensando direito StStream.Seek(16, soFromBeginning); //localiza o offset S:= StStream.ReadString(17); // ler 17 bytes a partir do offset localizado ListBox1.Items.Add(S);
  6. Exemplo: const offsetV: array[0..99] of integer = (16,64,112,160,208,256,304,352,400,448,496,544,592,640,688,736,784,832,880, 928,976,1024,1072,1120,1168,1216,1264,1312,1360,1408,1456,1504,1552,1600, 1648,1696,1744,1792,1840,1888,1936,1984,2032,2080,2128,2176,2224,2272,2320, 2368,2416,2464,2512,2560,2608,2656,2704,2752,2800,2848,2896,2944,2992,3040, 3088,3136,3184,3232,3280,3328,3376,3424,3472,3520,3568,3616,3664,3712,3760, 3808,3856,3904,3952,4000,4048,4096,4144,4192,4240,4288,4336,4384,4432,4480, 4528,4576,4624,4672,4720,4768); No arquivo bin que quero ler, sem que tem vários offset (StStream.Seek(offsetV, soFromBeginning)) quero ler as strings que vem depois de cada offset encontrado e jogar em uma ListBox.
  7. Olá a todos. Estou com a seguinte duvida: Tenho este condigo para localizar um string especifica em um arquivo binário. procedure TForm3.Button1Click(Sender: TObject); var StStream: TStringStream; FStream: TFileStream; S, SDS : UnicodeString; begin FStream := TFileStream.Create('c:/file.bin', fmOpenRead); StStream := TStringStream.Create(''); StStream.CopyFrom(FStream, FStream.Size); SDS := StStream.DataString; try S := 'blablabla'; if Pos(S, SDS) > 0 then ListBox1.Items.Add(S); finally StStream.Free; FStream.Free; end; end; Mas o o problema é que: só localiza se eu souber o que procurar. Como faço para localizar strings em vários pontos do arquivo bin. Usando o seek() sei como localiza os pontos que quero ler, como ler as strings a partir destes pontos. Desde já agradeço.
  8. vlw irmão muito obrigado, deu certo aqui. Agora uma duvida qual destas duas função é mais eficaz? consome menos processos 1ª if LisB.Items.Count > 0 then begin for I := 0 to LisB.Items.Count -1 do for j := 0 to CListB.Items.Count -1 do if CListB.Items.Strings[j] = LisB.Items.Strings[i] then CListB.Checked[j] := true; end; 2ª if LisB.Items.Count > 0 then begin for I := 0 to LisB.Items.Count -1 do begin s := LisB.Items.Strings[i] ; if CListB.Items.IndexOf(LisB.Items.Strings[i]) > 0 then CListB.Checked[CListB.Items.IndexOf(s)] := true; end; end; a 1ª que você postou ou a 2ª?
  9. olá a todos preciso de ajuda de novo tenho um checklistbox1 e um listbox1, no checklistbox1 tem 5 items e no listbox1 tem 3 como faço para que no evento oncreate do form somente os items existente no listbox seja marcados no checklistbox1. Este codigo abaixo marca os 3 primeiros items do checklistbox1 for I := 0 to ListBox1.Items.Count -1 do begin if CheckListBox1.Items.IndexOf(ListBox1.Items.Strings[i]) > 0 then CheckListBox1.Checked[i] := true end;
  10. Olá pessoal mais uma vez eu aqui pedindo ajuda.. É o seguinte estou desenvolvendo um aplicativo e preciso visualizar os arquivo que usuário está editando em Hex e ASCII, assim com na imagem veja abaixo: Exatamente como na imagem só que em um memo ou qualquer outro componente. Achei este código na net mas não estou conseguido adapta-lo para abrir em um memo. Se alguém pude me ajudar... Agradeço. # include <cstdlib> # include <iostream> # include <iomanip> # include <fstream> # include <ctime> using namespace std; int main ( long argc, char *argv[] ); void handle ( char file_in_name[] ); void timestamp ( void ); int main ( long argc, char *argv[] ) { char file_in_name[80]; int i; bool VERBOSE = true; if ( VERBOSE ) { timestamp ( ); cout << "\n"; cout << "HEXDUMP:\n"; cout << " C++ version\n"; cout << "\n"; cout << " Compiled on " << __DATE__ << " at " << __TIME__ << ".\n"; cout << "\n"; cout << " Produce a hexadecimal dump of a file.\n"; } // // If the input file was not specified, get it now. // if ( argc <= 1 ) { cout << "\n"; cout << "HEXDUMP:\n"; cout << " Please enter the name of a file to be analyzed.\n"; cin.getline ( file_in_name, sizeof ( file_in_name ) ); handle ( file_in_name ); } // // Otherwise, get the file(s) from the argument list. // else { for ( i = 1 ; i < argc ; ++i ) { handle ( argv[i] ); } } if ( VERBOSE ) { cout << "\n"; cout << "HEXDUMP:\n"; cout << " Normal end of execution.\n"; cout << "\n"; timestamp ( ); } system("pause"); return 0; } void handle ( char file_in_name[] ) { long int addr; unsigned char buffer[20]; long int cnt; long int cnt2; ifstream file_in; long n; // // Open the file. // file_in.open ( file_in_name ); if ( !file_in ) { cout << "\n"; cout << "HANDLE - Fatal error!\n"; cout << " Cannot open \"" << file_in_name << "\"\n"; return; } cout << "\n"; cout << "Hexdump of \"" << file_in_name << "\":\n"; cout << "\n"; cout << "Address Hexadecimal values Printable\n"; cout << "------- ----------------------------------------------- -------------\n"; cout << "\n"; // // Dump the file contents. // addr = 0; while ( 1 ) { file_in.read ( ( char * ) buffer, 16 ); cnt = file_in.gcount(); if ( cnt <= 0 ) { break; } // // Print the address in decimal and hexadecimal. // cout << setw(7) << ( int ) addr << " "; addr = addr + 16; // // Print 16 data items, in pairs, in hexadecimal. // cnt2 = 0; for ( n = 0; n < 16; n++ ) { cnt2 = cnt2 + 1; if ( cnt2 <= cnt ) { cout << hex << setw(2) << setfill ( '0' ) << ( int ) buffer[n]; } else { cout << " "; } cout << " "; } cout << setfill ( ' ' ); // // Print the printable characters, or a period if unprintable. // cout << " "; cnt2 = 0; for ( n = 0; n < 16; n++ ) { cnt2 = cnt2 + 1; if ( cnt2 <= cnt ) { if ( buffer[n] < 32 || 126 < buffer[n] ) { cout << '.'; } else { cout << buffer[n]; } } } cout << "\n"; cout << dec; if ( file_in.eof ( ) ) { break; } } file_in.close ( ); return; } void timestamp ( void ) { # define TIME_SIZE 40 static char time_buffer[TIME_SIZE]; const struct tm *tm; size_t len; time_t now; now = time ( NULL ); tm = localtime ( &now ); len = strftime ( time_buffer, TIME_SIZE, "%d %B %Y %I:%M:%S %p", tm ); cout << time_buffer << "\n"; return; # undef TIME_SIZE }
  11. cgm2k7

    Loop Reverso

    int Offset_Total[] = {4,52,100,148,196,244,292,340,388,436,484,532,580,628,676,724,772,820,868,916,964,1012}; path = Edit1->Text + "\\DpFileList.bin"; if((arq = fopen(path.c_str(), "w+b")) == 0){ ShowMessage("Erro ao acessar o arquivo"); } for (int i = 0; i < ListBox1->Items->Count; i++) { if(fseek(arq, Offset_Total[i], SEEK_SET)!=1){ if(fwrite(&loopRevese, 1, 1, arq)==1){ ShowMessage("Dados gravados com sucesso!"); } } } Como gravar nos Offsets 'Offset_Total[]' a quantidade de item no listbox1 reverso tipo: 9,8,7,6,5,4,3,2,1