-
Conteúdo Similar
-
Por Manoel010953
Bom Dia pessoal, tudo bom? Sou novo em programação e estou tentando criar uma dll no delphi.
Essa dll vai ser usada em uma aplicação do delphi também.
Queria saber se é possível utilizar vetores e matrizes e como fazer isso pois eu tentei declarar como um array of array of (um tipo), mas dá erro (essas matrizes seriam parâmetros da função). Colocando só como array of (um tipo) funciona, mas ao tentar acessar a função na dll dá um access violation. Eu já havia criado essa função dentro da minha aplicação e estava funcionando, mas na dll da esse erro. Eu tentei usar um ponteiro também, mas continua dando o erro. Por favor me ajudem.
Segue o código:
library NDC_Generator; uses SysUtils, Dialogs, Classes; Type Matriz = Array of array of string; P1 = ^Matriz; {$R *.res} procedure MensagemConfirmacao(AMensagem: WideString); stdcall; begin MessageDlg(AMensagem, mtInformation, [mbOk], 0); end; function gerarcombinacoes(Mat: P1; Xb, Total, np, NumCri: integer; mp, bud: Double; Pointer: P1): string; stdcall; var i, j, k, T, a, p: integer; aux1: string; R0: Double; vetop, vmax: array of integer; matrizaj: array of array of integer; vetmax, vetmin: array of Double; vet_aux, Vetname: array of string; matrizaux1 : array of array of Double; matriz_result: array of array of String; begin setlength(vetop, np); setlength(vmax, np); setlength(matrizaj, T, np); setlength(vetmax, NumCri); setlength(vetmin, NumCri); setlength(vet_aux, T); p := 0; for i := 0 to np - 1 do begin vmax[np - i - 1] := Xb - i; end; for i := 0 to np - 1 do vetop := i + 1; vetop[np - 1] := np - 1; for i := 0 to NumCri - 1 do begin vetmin := 100000; vetmax := -1; end; i := 0; T := 0; while (T < Total) do // Gerar as combinações com np elementos begin if T <> 1 then i := np; while (i > 0) do // Verifica se alguma das posições já atingiu seu máximo begin if (i - 1) <> 0 then // Verifica se não se trata da primeira posição que atingiu seu máximo begin if (vetop[i - 1] = vmax[i - 1]) and (vetop[i - 2] < vmax[i - 2]) then begin vetop[i - 2] := vetop[i - 2] + 1; vetop[i - 1] := vetop[i - 2]; ; if (i < np) then for j := i to np - 1 do vetop[j - 1] := vetop[j - 2] + 1; vetop[np - 1] := vetop[np - 2]; break; end; // vetop end; // 0 i := i - 1; end; // while i>0 vetop[np - 1] := vetop[np - 1] + 1; R0 := 0; for k := 0 to np - 1 do R0 := R0 + StrToFloat( Mat^[vetop[k] - 1, NumCri + 1]); if R0 <= bud then begin p := p + 1; setlength(matrizaux1, p, NumCri + 1); setlength(Vetname, p); for a := 0 to NumCri - 1 do begin for k := 0 to np - 1 do matrizaux1[p - 1, a] := matrizaux1[p - 1, a] + StrToFloat( Mat^[vetop[k] - 1, a + 1] ); if (matrizaux1[p - 1, a] > vetmax[a]) then vetmax[a] := matrizaux1[p - 1, a]; if (matrizaux1[p - 1, a] < vetmin[a]) then vetmin[a] := matrizaux1[p - 1, a]; end; matrizaux1[p - 1, NumCri] := R0; a:= 0; for k := 0 to np - 1 do Vetname[p - 1] := Vetname[p - 1] + Mat^[ vetop[k] - 1,a] + ' '; end; // R0 <= Bud T := T + 1; end; // While a := 0; k := 0; for i := 0 to p - 1 do begin if mp <> 0 then for j := 0 to NumCri - 1 do begin if vetmax[j] <> vetmin[j] then begin R0 := (matrizaux1[i, j] - vetmin[j]) / (vetmax[j] - vetmin[j]); end else R0 := 1; if R0 >= mp then begin a := a + 1; end else break; end else a := NumCri; if a = NumCri then begin k := k + 1; for j := 0 to NumCri do begin setlength(matriz_result, k, NumCri + 2); matriz_result[k - 1, j+1] := floattostr( matrizaux1[i, j]); end; matriz_result[k - 1, 0]:= Vetname; end; a := 0; end; for I := 0 to k - 1 do for j := 0 to numcri + 1 do Pointer^[i,j]:= matriz_result[i,j]; MensagemConfirmacao('Foram geradas' + inttostr(k) + 'combinações!'); Result := '0'; end; exports gerarcombinacoes; end.
-
Por Isabel Ferreira
Olá, bom dia
Estou tendo um pequeno problema na instalação e configuração do Boleto.net, mesmo lendo no gith deles, aparentemente não estou sabendo mexer, pois é a primeira vez que eu o utilizo. Teria como alguém me explicar o passo a passo de como fazer? Para eu ver o que de errado eu possa ter feito.
Muito obrigada
-
Por scinfovirtual
Ola, gostaria de anunciar uma DLL para exportação de produtos para balança FREE, fiquem a vontade para baixar e usar, não requer cadastro.
segue o link da dll e do exemplo:
http://sc10.com.br/index.php/2018/04/21/dll-lib-para-exportacao-para-balancas/
Att.
andersonscinfo
-
Por scinfovirtual
Dll/lib é destinada e distribuída para desenvolvedores de forma gratuita/FREE para validação de informações, abaixo o link da postagem do blog onde tem link para download e do exemplo, é totalmente free.
Validação de CEP.
Validação de CHAVE DFE.
Validação de CNH.
Validação de CNPJ
Validação de CPF
Validação de CARTÃO DE CRÉDITO.
Validação de GTIN.
Validação de INSCRIÇÃO ESTADUAL.
Validação de ISUF.
Validação de RENAVAM.
Validação de SUFRAMA.
Validação de UF.
http://sc10.com.br/index.php/2018/04/27/dll-lib-para-validacao-de-documentos/
Att.
andersonscinfo
-
Por thgsousa312
Olá pessoal, venho aqui fazer uma pergunta um pouco vaga.. e possível converter parte do código fonte de um arquivo .dll para que eu use em meu site?
Fiz essa pergunta pois quando visualizei o código eu pude perceber certa semelhança.
aqui vai o codigo...
internal static class Connection { internal static SocketClient SocketClient { get; private set; } private static int _portRangePossibility; internal static void Init(string ip, int port, int portRange) { _portRangePossibility = portRange; SocketClient = new SocketClient(ip, port, 3000); } internal static bool IsConnected() { byte[] rfBytes = new byte[1]; return Global.ExecCommandWithOutArgs(0, ref rfBytes); } internal static void Disconnect() { Global.ExecCommandWithOutArgsWithOutReturn(Command.Quit); SocketClient.Disconnect(); } internal static bool Connect() { int range = _portRangePossibility; for (int i = 0; i < range; i++) { if(SocketClient.Connect()) return true; SocketClient.Port++; } return false; } }
-