* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Novembre 26, 2024, 04:46:29 am

Inserisci il nome utente, la password e la durata della sessione.

59 Visitatori, 0 Utenti

Autore Topic: DLL Profilabexpert  (Letto 22854 volte)

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:DLL Profilabexpert
« Risposta #15 il: Maggio 10, 2013, 04:49:54 pm »
Codice: [Seleziona]
s := sl.Values[IntToStr(i)];
prova a cambiarlo in
Codice: [Seleziona]
s := sl[I];
.
Messo così ci possono essere errori, controlla che "I" sia un indice valido.
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Simon75

  • Full Member
  • ***
  • Post: 139
  • Karma: +0/-0
Re:DLL Profilabexpert
« Risposta #16 il: Maggio 15, 2013, 04:41:37 pm »
Niente Stilgar  non riesco a caricare niente nel display.
la log mi indica sempre (non caricato).

anche inserendo
Codice: [Seleziona]
s := sl[I];






A volte bisogna commettere errori per capire qual è la cosa giusta da fare...

Const
Errori=Esperienza

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:DLL Profilabexpert
« Risposta #17 il: Maggio 15, 2013, 05:03:03 pm »
Ok, ma il file è popolato? Sembrerà una domanda scema, ma a volte sono proprio le cose più banali che dimentichiamo di controllare.
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:DLL Profilabexpert
« Risposta #18 il: Maggio 15, 2013, 06:14:51 pm »
non trova nessun valore valido: o, come dice Stilgar, non è popolato il file o nelle righe non c'è una stringa nulla ma qualcos'altro
prova ad usare questo codice e vediamo cosa esce nel log

Codice: [Seleziona]
for i := low(PAParams^) to high(PAParams^) do
    begin
       s := sl.Values[IntToStr(i)];
       log(IntToStr(i)+': valore = <' + s + '>');
       if s <> '' then begin
          e := StrToFloat(s);
          PAParams^[i] := e;
          log('   + IntToStr(i)+' caricato');
       end else begin
          log('  ' + IntToStr(i)+' non caricato');
       end;
    end;

Imagination is more important than knowledge (A.Einstein)

Simon75

  • Full Member
  • ***
  • Post: 139
  • Karma: +0/-0
Re:DLL Profilabexpert
« Risposta #19 il: Maggio 15, 2013, 10:03:19 pm »
ho notato che quando rimane premuto il tasto carica ovvero ( I0 = 0  )nel display si vede il valore 5

il codice l'ho inserito qui:

Codice: [Seleziona]


  procedure CaricaArrayDaFile(FileName: string; PAParams: PDLLParams);
  var
    i: integer;
    sl: TStringList;
    e: extended;
    s: string;
  begin
    sl := TStringList.Create;
    try
      try
        sl.LoadFromFile(FileName);
        for i := low(PAParams^) to high(PAParams^) do
        begin
          s := sl.Values[IntToStr(i)];
          log(IntToStr(i) + ': valore = <' + s + '>');
          if s <> '' then
          begin
            e := StrToFloat(s);
            PAParams^[i] := e;
            log('   ' + IntToStr(i) + ' caricato');
          end
          else
          begin
            log('  ' + IntToStr(i) + ' non caricato');
          end;
        end;
  except
        on e: Exception do
        begin
          log('porca miseria! "' + e.message + '"');
          raise e;
        end;
      end;
    finally
      sl.Free;
    end;
  end;     

Mi tira fuori questo:

Nome del file selezionato : C:\Users\Simone75\Desktop\Dado\dll\Prova.txt
POutput ok
0: valore = <>
  0 non caricato
1: valore = <>
  1 non caricato
2: valore = <>
  2 non caricato
3: valore = <>
  3 non caricato
4: valore = <>
  4 non caricato
5: valore = <>
  5 non caricato
6: valore = <>
  6 non caricato
7: valore = <>
  7 non caricato
8: valore = <>
  8 non caricato
9: valore = <>
  9 non caricato
10: valore = <>
  10 non caricato
11: valore = <>
  11 non caricato
12: valore = <>
  12 non caricato
13: valore = <>
  13 non caricato
14: valore = <>
  14 non caricato
15: valore = <>
  15 non caricato
16: valore = <>
  16 non caricato
17: valore = <>
  17 non caricato
18: valore = <>
  18 non caricato
19: valore = <>
  19 non caricato
20: valore = <>
  20 non caricato
21: valore = <>
  21 non caricato
22: valore = <>
  22 non caricato
23: valore = <>
  23 non caricato
24: valore = <>
  24 non caricato
25: valore = <>
  25 non caricato
26: valore = <>
  26 non caricato
27: valore = <>
  27 non caricato
28: valore = <>
  28 non caricato
29: valore = <>
  29 non caricato
30: valore = <>
  30 non caricato
31: valore = <>
  31 non caricato
32: valore = <>
  32 non caricato
33: valore = <>
  33 non caricato
34: valore = <>
  34 non caricato
35: valore = <>
  35 non caricato
36: valore = <>
  36 non caricato
37: valore = <>
  37 non caricato
38: valore = <>
  38 non caricato
39: valore = <>
  39 non caricato
40: valore = <>
  40 non caricato
41: valore = <>
  41 non caricato
42: valore = <>
  42 non caricato
43: valore = <>
  43 non caricato
44: valore = <>
  44 non caricato
45: valore = <>
  45 non caricato
46: valore = <>
  46 non caricato
47: valore = <>
  47 non caricato
48: valore = <>
  48 non caricato
49: valore = <>
  49 non caricato
50: valore = <>
  50 non caricato
51: valore = <>
  51 non caricato
52: valore = <>
  52 non caricato
53: valore = <>
  53 non caricato
54: valore = <>
  54 non caricato
55: valore = <>
  55 non caricato
56: valore = <>
  56 non caricato
57: valore = <>
  57 non caricato
58: valore = <>
  58 non caricato
59: valore = <>
  59 non caricato
60: valore = <>
  60 non caricato
61: valore = <>
  61 non caricato
62: valore = <>
  62 non caricato
63: valore = <>
  63 non caricato
64: valore = <>
  64 non caricato
65: valore = <>
  65 non caricato
66: valore = <>
  66 non caricato
67: valore = <>
  67 non caricato
68: valore = <>
  68 non caricato
69: valore = <>
  69 non caricato
70: valore = <>
  70 non caricato
71: valore = <>
  71 non caricato
72: valore = <>
  72 non caricato
73: valore = <>
  73 non caricato
74: valore = <>
  74 non caricato
75: valore = <>
  75 non caricato
76: valore = <>
  76 non caricato
77: valore = <>
  77 non caricato
78: valore = <>
  78 non caricato
79: valore = <>
  79 non caricato
80: valore = <>
  80 non caricato
81: valore = <>
  81 non caricato
82: valore = <>
  82 non caricato
83: valore = <>
  83 non caricato
84: valore = <>
  84 non caricato
85: valore = <>
  85 non caricato
86: valore = <>
  86 non caricato
87: valore = <>
  87 non caricato
88: valore = <>
  88 non caricato
89: valore = <>
  89 non caricato
90: valore = <>
  90 non caricato
91: valore = <>
  91 non caricato
92: valore = <>
  92 non caricato
93: valore = <>
  93 non caricato
94: valore = <>
  94 non caricato
95: valore = <>
  95 non caricato
96: valore = <>
  96 non caricato
97: valore = <>
  97 non caricato
98: valore = <>
  98 non caricato
99: valore = <>
  99 non caricato
100: valore = <>
  100 non caricato
« Ultima modifica: Maggio 15, 2013, 10:15:39 pm da Simon75 »
A volte bisogna commettere errori per capire qual è la cosa giusta da fare...

Const
Errori=Esperienza

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:DLL Profilabexpert
« Risposta #20 il: Maggio 16, 2013, 12:31:38 am »
Ma il file ... cosa contiene?
Non lo hai ancora postato.
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:DLL Profilabexpert
« Risposta #21 il: Maggio 16, 2013, 03:08:29 pm »
dal log sembrerebbe contenere un centinaio di "accapo" e basta
Imagination is more important than knowledge (A.Einstein)

Simon75

  • Full Member
  • ***
  • Post: 139
  • Karma: +0/-0
Re:DLL Profilabexpert
« Risposta #22 il: Maggio 16, 2013, 05:21:58 pm »
Questo è quello che tento di caricare


A volte bisogna commettere errori per capire qual è la cosa giusta da fare...

Const
Errori=Esperienza

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:DLL Profilabexpert
« Risposta #23 il: Maggio 16, 2013, 09:12:35 pm »
ok, allora prova a non usare values[] ma direttamente [].
Stai caricando tutta la stringa, non devi farla interpretare....
Se metti 45=0,1
Forse alla posizione 45 ti trova 0,1
Ma non ci giurerei così su 2 piedi ;)
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Simon75

  • Full Member
  • ***
  • Post: 139
  • Karma: +0/-0
Re:DLL Profilabexpert
« Risposta #24 il: Maggio 17, 2013, 09:12:10 am »
Ma dici in questa riga?

Codice: [Seleziona]
s := sl.Values[IntToStr(i)];



Ho provato  a salvare con il ; usandolo come separatore es: 34;56  il programma mi salva solo il 34 il 56 non lo vede.
Devo indicare il tipo di dato giusto?
« Ultima modifica: Maggio 17, 2013, 09:16:26 am da Simon75 »
A volte bisogna commettere errori per capire qual è la cosa giusta da fare...

Const
Errori=Esperienza

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:DLL Profilabexpert
« Risposta #25 il: Maggio 17, 2013, 09:33:24 am »
Ma dici in questa riga?

Codice: [Seleziona]
s := sl.Values[IntToStr(i)];

si prova a sostituirla con:
Codice: [Seleziona]
 s := sl[i];


Edit:
i numeri vanno salvati con la notazione anglosassone, quindi il separatore decimale è il punto "." e non la virgola ","
se non puoi usare il punto, devi aggirare la cosa con FormatSettings
« Ultima modifica: Maggio 17, 2013, 09:46:40 am da nomorelogic »
Imagination is more important than knowledge (A.Einstein)

Simon75

  • Full Member
  • ***
  • Post: 139
  • Karma: +0/-0
Re:DLL Profilabexpert
« Risposta #26 il: Maggio 17, 2013, 11:00:55 am »
Inserendo questo:

Codice: [Seleziona]

 s := sl[i];



La  Log mi tira fuori:


Nome del file selezionato : C:\Documents and Settings\Simone\Desktop\dll\Prova.txt
POutput ok
0: valore = <45>
  0 caricato
porca miseria! "List index (1) out of bounds"
A volte bisogna commettere errori per capire qual è la cosa giusta da fare...

Const
Errori=Esperienza

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:DLL Profilabexpert
« Risposta #27 il: Maggio 17, 2013, 11:28:18 am »
Non controlli gli indici e la validità dei limiti .
Ve bene fare il ciclo for per l'array in memeoria, ma devi anche impedire di "leggere" oltre i limiti.
Il primo giro il valore è presente.
Ma il secondo giro non hai nessun valore, per cui TStringList ti segnala il problema.

Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Simon75

  • Full Member
  • ***
  • Post: 139
  • Karma: +0/-0
Re:DLL Profilabexpert
« Risposta #28 il: Maggio 17, 2013, 12:11:41 pm »
Si... ma come faccio a impedire di leggere oltre i limiti?

A volte bisogna commettere errori per capire qual è la cosa giusta da fare...

Const
Errori=Esperienza

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:DLL Profilabexpert
« Risposta #29 il: Maggio 17, 2013, 01:22:50 pm »
ci sono molti modi, prova questo

Codice: [Seleziona]


  procedure CaricaArrayDaFile(FileName: string; PAParams: PDLLParams);
  var
    i: integer;
    sl: TStringList;
    e: extended;
    s: string;
  begin
    sl := TStringList.Create;
    try
      try
        sl.LoadFromFile(FileName);
        for i := low(PAParams^) to high(PAParams^) do
        begin
          if not (i in [0..sl.count-1]) then
             break;

          s := sl.Values[IntToStr(i)];
          log(IntToStr(i) + ': valore = <' + s + '>');
          if s <> '' then
          begin
            e := StrToFloat(s);
            PAParams^[i] := e;
            log('   ' + IntToStr(i) + ' caricato');
          end
          else
          begin
            log('  ' + IntToStr(i) + ' non caricato');
          end;
        end;
  except
        on e: Exception do
        begin
          log('porca miseria! "' + e.message + '"');
          raise e;
        end;
      end;
    finally
      sl.Free;
    end;
  end;     
Imagination is more important than knowledge (A.Einstein)

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19198
  • Topic in totale: 2289
  • Online Today: 63
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 59
Total: 59

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.