Jump to content
Sign in to follow this  

Recommended Posts

Pessoal preciso muito da ajuda dos feras deste fórum.

Seguinte, usei e ainda uso um programa para cadastrar conteúdos de DVD, e HDD, o programa foi feito em Delphi 5, e o desenvolvedor descontinuou o programa e disponibilizou os fontes para a comunidade GNU.

Ocorre que faz muito tempo que não mexo com Delphi, e como o programa é antigo, porém muito bom e funcional, ele não trata o tamanho dos arquivos em GigaBytes/TeraBytes, nem existiam HD com 1TB ou maiores na época, e meus arquivos MKV, por exemplo, que tem valores em GibaBytes, o programa está lendo e armazenando os tamanhos dos arquivos com valores errôneos, e os apresenta com valores negativos e muitas vezes errados.

Abri o projeto e verifiquei que o desenvolvedor usa programação de baixo nível com uso de record e ponteiros, para ler um DVD, ou um HDD, e tentei por 3 dias entender a lógica disso, mas estou jogando a toalha, porque não sei como alterar a leitura/gravação dos arquivos .QDR que ele cria, para contemplar GIGA BYTES e/ou TERA BYTES.

Se alguém puder me ajudar, ficarei muito grato.

A fonte encontra-se aqui na minha conta MEGA:

https://mega.nz/#!bgw3mL4K

Chave para descryptografia no MEGA

!ln-C0iOSHrVighGGXoHB-cZgMgDXMIdOTo5Hy-bnrXU

Att.

Druid®.

Share this post


Link to post
Share on other sites

Pois é ninguém mais mexe com Delphi 5 mesmo, burrice minha perguntar algo neste teor não é mesmo :( .

Claro que não amigo haha! Quanto maior a dificuldade , maior o prazer no final, não é mesmo?!?!

Bom, aconcelho que migre do delphi 5 para o 2010 por exemplo, ou um mais recente, por questões de compatibilidade.

Depois basta entender como funciona o codigo e refaze-lo.

Se você está acostumado a utilizar o delphi 5, creio que vá demora a se voltar para a mais recente, visto que variaveis e suas funções mudaram completamente.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By jeredy
      Tenho um trabalho da faculdade e não consigo fazer rodar o programa corretamente.
      Quando eu coloco o cpf, na hora de imprimir sai um número aleatório. Creio que possa ser por falta de memória pois se coloco um número menor ele sai certo, porém não consigo adicionar memória em cpf.
       
      Obs: ainda não fiz a parte dos menores e da medial do grupo e a parte de imprimir em tabela pois não consegui fazer funcionar nem um básico mas se alguém souber essa parte também e puder me ajudar agradeço!!
       
      #include <stdio.h> #include <stdlib.h> main(){ struct funcionarios{ int *cpf; char nome[30]; int nascimento; float salario; }; int aux=0; //para testar se for 0 antes de armazenar o cpf struct funcionarios *func; int qtdLeitura=0, i=0, cont=0; func = ((struct funcionarios *) (malloc(sizeof(struct funcionarios) * 1))); while(1){ printf("Digite o cpf %d: ", i+1); scanf("%d", &aux); if(aux!= 0){ func.cpf = aux; fflush(stdin); } else{ break; } if(func != NULL){ qtdLeitura++; func = ((struct funcionarios *) realloc(func, sizeof(struct funcionarios) *(qtdLeitura+1))); } printf("Digite o nome %d: ", i+1); scanf("%s", func.nome); printf("Digite o nascimento %d: ",i+1); scanf("%d", &func.nascimento); printf("Digite o salario %d: ",i+1); scanf("%f", &func.salario); cont++; i++; } printf("\n\n"); for(i=0;i<cont;i++){ printf("Cpf %d:%d \n",i+1, func.cpf); printf("Nome %d: %s\n",i+1, func.nome); printf("Nascimento %d: %d\n",i+1, func.nascimento); printf("Salario %d: %.2f\n",i+1, func.salario); } }
       

    • By Rrec
      Boa noite pessoal, estou com um problema em um script fantástico.
       
      Seguinte, quem quiser visualizar ele está aqui: https://www.radiorec.com.br/teste/
       
      A função do script é: O usuário seleciona a forma que vai querer gravar o áudio, .mp3, .wav ou .ogg.
      Ele clica em Record (é solicitada  permissão de gravar com o microfone);
      Aperta Stop, um player aparece com o áudio gravado para ele escutar e um link temporário para download.
       
      A questão é: Ao invés de gravar o microfone do usuário, eu gostaria de possibilitar o usuário gravar uma rádio stream que eu determinarei.
      No caso, acredito que eu tenha que substituir o "getUserMedia" pelo "link da stream", ou eu coloco tipo o player na mesma página tocando e peço pro script captar o audio que vem do player..
       
      Gente de verdade, tenho conhecimento básico, estou tentando fazer isso há uns dias, mas não acho nada que me ajude..
       
      Quem puder me ajudar ou dar uma luz para onde eu seguir.. muito obrigado, abçs..
       
      o código é:
       
      //webkitURL is deprecated but nevertheless URL = window.URL || window.webkitURL; var gumStream; //stream from getUserMedia() var recorder; //WebAudioRecorder object var input; //MediaStreamAudioSourceNode we'll be recording var encodingType; //holds selected encoding for resulting audio (file) var encodeAfterRecord = true; // when to encode // shim for AudioContext when it's not avb. var AudioContext = window.AudioContext || window.webkitAudioContext; var audioContext; //new audio context to help us record var encodingTypeSelect = document.getElementById("encodingTypeSelect"); var recordButton = document.getElementById("recordButton"); var stopButton = document.getElementById("stopButton"); //add events to those 2 buttons recordButton.addEventListener("click", startRecording); stopButton.addEventListener("click", stopRecording); function startRecording() { console.log("startRecording() called"); /* Simple constraints object, for more advanced features see https://addpipe.com/blog/audio-constraints-getusermedia/ */ var constraints = { audio: true, video:false } /* We're using the standard promise based getUserMedia() https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia */ navigator.mediaDevices.getUserMedia(constraints).then(function(stream) { __log("getUserMedia() success, stream created, initializing WebAudioRecorder..."); /* create an audio context after getUserMedia is called sampleRate might change after getUserMedia is called, like it does on macOS when recording through AirPods the sampleRate defaults to the one set in your OS for your playback device */ audioContext = new AudioContext(); //update the format document.getElementById("formats").innerHTML="Format: 2 channel "+encodingTypeSelect.options[encodingTypeSelect.selectedIndex].value+" @ "+audioContext.sampleRate/1000+"kHz" //assign to gumStream for later use gumStream = stream; /* use the stream */ input = audioContext.createMediaStreamSource(stream); //stop the input from playing back through the speakers //input.connect(audioContext.destination) //get the encoding encodingType = encodingTypeSelect.options[encodingTypeSelect.selectedIndex].value; //disable the encoding selector encodingTypeSelect.disabled = true; recorder = new WebAudioRecorder(input, { workerDir: "js/", // must end with slash encoding: encodingType, numChannels:2, //2 is the default, mp3 encoding supports only 2 onEncoderLoading: function(recorder, encoding) { // show "loading encoder..." display __log("Loading "+encoding+" encoder..."); }, onEncoderLoaded: function(recorder, encoding) { // hide "loading encoder..." display __log(encoding+" encoder loaded"); } }); recorder.onComplete = function(recorder, blob) { __log("Encoding complete"); createDownloadLink(blob,recorder.encoding); encodingTypeSelect.disabled = false; } recorder.setOptions({ timeLimit:120, encodeAfterRecord:encodeAfterRecord, ogg: {quality: 0.5}, mp3: {bitRate: 160} }); //start the recording process recorder.startRecording(); __log("Recording started"); }).catch(function(err) { //enable the record button if getUSerMedia() fails recordButton.disabled = false; stopButton.disabled = true; }); //disable the record button recordButton.disabled = true; stopButton.disabled = false; } function stopRecording() { console.log("stopRecording() called"); //stop microphone access gumStream.getAudioTracks()[0].stop(); //disable the stop button stopButton.disabled = true; recordButton.disabled = false; //tell the recorder to finish the recording (stop recording + encode the recorded audio) recorder.finishRecording(); __log('Recording stopped'); } function createDownloadLink(blob,encoding) { var url = URL.createObjectURL(blob); var au = document.createElement('audio'); var li = document.createElement('li'); var link = document.createElement('a'); //add controls to the <audio> element au.controls = true; au.src = url; //link the a element to the blob link.href = url; link.download = new Date().toISOString() + '.'+encoding; link.innerHTML = link.download; //add the new audio and a elements to the li element li.appendChild(au); li.appendChild(link); //add the li element to the ordered list recordingsList.appendChild(li); } //helper function function __log(e, data) { log.innerHTML += "\n" + e + " " + (data || ''); }  
    • By Edwar Saliba Jr.
      Boa tarde Senhores(as)!
       
      O código-fonte a seguir é a miniaturização de um problema maior no qual estou trabalhando.
       
      Preciso imprimir os valores do vetor gerado pela função "fazVetor", na função "main".
       
      Porém, para que o código se assemelhe ao problema real no qual estou trabalhando, existem duas restrições que devem ser respeitadas. Estas estão comentadas no código a seguir.
       
      #include <stdio.h> #include <stdlib.h> #define TAM 3 int fazVetor(int **vet){ int *array = malloc(sizeof(int) * TAM); array[0] = 4; array[1] = 7; array[2] = 8; /* nesta função somente a linha a seguir pode ser alterada. */ *vet = array; } int main() { int **qq; /* Na função main, somente a linha a seguir NÃO PODE ser alterada. */ fazVetor(&qq); printf("\n--==[Valores do Vetor]==--\n\n"); for(int i = 0; i < TAM; i++){ printf(" %d", (qq[i])); } printf("\n\n"); return 0; }  
      O único objetivo é a impressão dos valores do vetor na função "main". Respeitadas as devidas restrições.
       
      De antemão, muito obrigado!
       
       
      Edwar Saliba Jr.
    • By mauricio lanner
      Bom dia pessoal, estou com um probleminha, preciso entregar hoje um trabalho de faculdade em algoritimos computacionais, mas to me batendo muito.
      A questão é assim:
       
      Faça um programa que leia números do teclado e os armazene em um vetor alocado dinamicamente. O usuario irá digitar uma sequência de números, sem limite de quantidade. Os números serão digitados um a um e, sendo que caso ele deseje encerrar a entrada de dados, ele irá digitar o numero ZERO. Os dados devem ser armazenados na memória deste modo:
          • Inicie com um vetor de tamanho 10 alocado dinamicamente;
          • Apos, caso o vetor alocado esteja cheio, aloque um novo vetor do tamanho do vetor anterior adicionado espaço para mais 10 valores (tamanho N+10, onde N inicia com 10);
          • Copie os valores já digitados da área inicial para esta área maior e libere a memória da área inicial;
          • Repita este procedimento de expandir dinamicamente com mais 10 valores o vetor alocado cada vez que o mesmo estiver cheio. Assim o vetor ira ser ’expandido’ de 10 em 10 valores.
       
      O grande problema que estou tendo é que não consigo fazer o while repetir da forma que preciso. iniciei o programa assim:
      #include <stdio.h> #include <stdlib.h> main(){ int *vetor,tam=10,i=0; vetor = malloc(sizeof(int)*tam); while (vetor!=0 || i<tam){ scanf("%d",vetor+i); printf("%d i \n",i); i++; } for(i=0;i<tam;i++){ printf("indice %d vetor %d\n",i,vetor+i); } } mas o ||(ou) não quer funcionar, ou ele usa um como parametro ou usa a outra regra.
      Alguem consegue me ajudar a resolver isso?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.