Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    6

    molto molto molto principiante

    ciao a tutti.. ho iniziato da 2 gg a prendere in mmano java.. e evviamente per fare un programma "incasinato".. ma dovendolo fare per android.. posso farci poco.. allora un mio problema attuale..

    ho risolto il download ftp..
    la scrittura di file sul device..
    la gestione della scheda audio..
    etc etc..

    adesso.. ma porca miseria ( )
    come cavolo si fa a creare un record che contenga delle stringhe con un numero di
    caratteri fisso?

    mi spiego meglio:

    in pascal io ho

    TDBPal = Record
    Ora : LongInt;
    Tipo : SmallInt;
    MixIn : LongInt;
    Brano : string[40];
    Interprete : string[40];
    Audio : string[128];
    Base : string[128];
    Reallen : LongInt;
    end;

    l'ho convertito in
    class Record {
    long Ora;
    short Tipo;
    long MixIn;
    String Brano[40];
    String Interprete[40];
    String Audio[128];
    String Base[128];
    long Reallen;
    }

    ma ovviamente non va.. altro problema io devo creare un array di questi record e caricarli da un file, in pascal lo faccio con

    function ReadPal : boolean;
    var PalFile : string;
    z : integer;
    begin
    result := false;
    PalFile := SetDirSeparators(PalPath+'/Palimsest.abp');
    if not fileexists( PalFile) then
    FatalErrorExit(MSG('NOPAL'));

    z := 0;
    setlength( Pal, Z);

    AssignFile(FPal , PalFile);
    FileMode := fmOpenRead;
    Reset(FPal);
    setlength( Pal, FileSize(FPal));

    while not eof(fpal) do begin
    Read(FPal, Pal[z]);
    inc(z);
    end;
    closefile(FPal);
    end;

    si può fare qualcosa del genere con java?..
    Grazie a chiunque mi dia qualche info..

    Luigi

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Titolo e posting molto molto molto conformi al Regolamento interno, che ti consiglio di andare a leggere.

    Poi, se invece di scrivere "ma ovviamente non va" dicessi quali problemi effettivamente stai riscontrando e cercassi di spiegare per bene la problematica, perchè davvero io non ho assolutamente capito cosa tu voglia ottenere, magari qualcuno potrebbe anche avere qualche suggerimento da darti.

    Quello che in Pascal viene trattato come record, in Java lo puoi tranquillamente trattare come "classe". Un array di record sarà un array di oggetti di una determinata classe... certo, se non si sa come si scrive una classe, si va poco distante... e quell'esempio che hai scritto è ben poco conforme alla programmazione ObjectOriented quale Java è.

    Cerco di sistemare alle meglio il post, che così è davvero da sfera di cristallo... tu intanto cerca di aggiungere qualche dettaglio al problema.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    e passi da principiante a programmatore per android??

    Ci sono delle regole riguardo al linguaggio che non puoi bypassare cercando di mettere una pezza qua e la.
    La prima è che se tu hai una stringa, questa in generale non ha una dimensione massima (in realtà ce l'ha, ma è molto molto grande).
    Per cui se a te interessa una stringa di 40 caratteri, devi essere tu programmatore a fissare i limiti e a controllare di non superarli, non sarà il compilatore a farlo al posto tuo.

    codice:
    String Base[128];
    oltretutto on dovrebbe nemmeno compilare e soprattutto non rappresenta quello che vuoi dire tu.

    codice:
    String base[] = new String[128];
    se parli di array, ma hai definito base come un array di stringhe di 128 elementi, non una stringa di 128 caratteri!!!

    Ovviamente poi hai tutte le librerie di IO che ti consentono di interfacciarti con i file, anche qui sei però tu a riempire la struttura.

    In ogni caso, passa prima per i fondamenti del linguaggio, se sei molto molto principiante devi fare i programmi adatti al molto molto principiante.
    RTFM Read That F*** Manual!!!

  4. #4
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435

    Re: Moderazione

    Quoto con valia: in java non esiste "esattamente" qualcosa come una stringa a dimensione fissa però a me sembra non sia un vincolo necessario x far funzionare il tuo codice, semplicemente accetta stringhe di qualsiasi dimensione e, nelle fasi critiche, imponi un controllo sul numero di caratteri restituendo errore se violato.
    Per quanto riguarda l'interazione col file system...bè java è anni luce davanti al pascal (a dire il vero rispetto al pascal è anni luce avanti per praticamente tutto...benvenuto nel 21esimo secolo ), fatti un giro sulla documentazione ufficiale, magari partendo da qui http://docs.oracle.com/javase/tutori...ed/index.html, o cerca semplicemente su google, troverai tutto quello che ti serve...da come parli si capisce che a livello di teoria molte cose le sai, ma devi imparare a farle in java e quindi farti almeno un po' di basi.

    Altra cosa importante: non cercare di fare in java (e qualsiasi altro linguaggio ti ritroverai a imparare) le cose esattamente come le faresti in pascal, ma cerca di capire come java affronta i problemi e adattataci...se vai in inghilterra parlerai inglese, non ti ostinerai a parlare italiano, ti pare?Tra l'altro potrebbe anche piacerti di più.

    Originariamente inviato da LeleFT
    Poi, se invece di scrivere "ma ovviamente non va" dicessi quali problemi effettivamente stai riscontrando e cercassi di spiegare per bene la problematica, perchè davvero io non ho assolutamente capito cosa tu voglia ottenere, magari qualcuno potrebbe anche avere qualche suggerimento da darti.
    Sinceramente e volendo fare una battuta: se stanotte non hai dormito non è colpa sua...si capisce benissimo cosa vuole fare, gli si può dire tutto ma proprio questo no

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    6
    @leleft scusa..grazie
    @valia bhe principiante in java, ho sempre scritto in C e Delphi.. ok non sono Java e quindi dovrei incominciare con i programmini.. il problema è che purtroppo non ho il tempo..
    ovviamente direte.. e allora cosa vuoi da noi?...
    un aiuto.. imparo molto alla svelta nonostante la mia età.. e quindi credo che con qualche dritta...

    @dark e si che devo avere per forza una stringa fissa.. è un record che carico da un disco...


    Vediamo, -se con String base[] = new String[128]; definisco un'array di tringhe come faccio a definire una semplice stringa di 40 caratteri?

    io devo caricare i record direttamente da un file che è composto di una serie di record salvati uno dietro l'altro, e i record sono composti come ho scritto:

    TDBPal = Record
    Ora : LongInt; 8 byte
    Tipo : SmallInt; 2 byte
    MixIn : LongInt; 8 byte
    Brano : string[40]; 40 byte
    Interprete : string[40]; 40 byte
    Audio : string[128]; 128 byte
    Base : string[128]; 128 byte
    Reallen : LongInt; 8 byte
    end;

    ovviamente se compilo con la parte string il compilatore non compila.. senza va tutto bene..
    come posso inserire anche queste 4 stringhe nel record?

    Grazie.. e non cazziatemi troppo per favore.. sono un vecchietto..
    gigi

  6. #6
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Ah ecco xkè usi il pascal!
    Senti devi obbligatoriamente farti un giro sul tutorial di java e imparare innanzitutto cosa sono gli oggetti e la programmazione object oriented...non possiamo farti un corso su java qui, aiutarti si ma solo quando hai acquisito almeno una base.

    Cmq il fatto che leggi esattamente 40 bytes (e in java puoi farlo) non ti obbliga a mettere i 40 bytes in un contenitore di esattamente 40 bytes ti trovi?Basta che sia maggiore o uguale.
    Cmq volendo puoi crearti il classico array di caratteri:
    codice:
    char[] myRecord = new char[40]
    senza far ricorso alle stringhe (che sono oggetti) ma ripeto...impara prima un minimo di cose...

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    eeee vecchietto o no davvero non puoi bypassare le basi.
    Il file lo puoi vedere come una sequenza di byte, quindi devi fare tu un po' di passaggi che posso provare a spiegarti qui ma è davvero dura.
    Posso provare a spiegarti come fare, ma le basi di un linguaggio di programmazione ti servono.

    Fai conto che
    codice:
    TDBPal = Record
    Ora : LongInt; 8 byte
    Tipo : SmallInt; 2 byte
    MixIn : LongInt; 8 byte
    Brano : string[40]; 40 byte
    Interprete : string[40]; 40 byte
    Audio : string[128]; 128 byte
    Base : string[128]; 128 byte
    Reallen : LongInt; 8 byte
    end;
    LongInt, SmallInt in java non esistono, devi crearti tu le tue funzioni di conversione di typo. Da come vedo dovrebbero bastarti un long e uno short.
    Per quanto riguarda audio, in genere tu hai un array di 128 byte. Ti salva perché se leggi 128 byte hai un costruttore di string che da questi ti restituisce la stringa. La relativa riscrittura però dipende da te, quindi devi fare un wrapper che ti consenta di interfacciarti con IO.
    Hai anche le sequenze di inizio e fine record?
    RTFM Read That F*** Manual!!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    6
    Ecco come si fa.. senza complicarsi la vita

    Definizione
    import javolution.io.*; (da www.javolution.org)

    public final class PalR extends Struct {

    public final Signed32 Ora = new Signed32();
    public final Signed16 Tipo = new Signed16();
    public final Signed32 MixIn = new Signed32();
    public final UTF8String Brano = new UTF8String(41);
    public final UTF8String Interprete = new UTF8String(41);
    public final UTF8String Audio = new UTF8String(129);
    public final UTF8String Base = new UTF8String(129);
    public ByteOrder byteOrder() {
    return ByteOrder.LITTLE_ENDIAN;
    }
    }
    PalR PalM = new PalR();

    per il salvataggio

    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.connect();
    InputStream is = connection.getInputStream();
    DataInputStream dis = new DataInputStream( is);
    int z = connection.getContentLength() / PalM.size();
    PalM.read(is);

    E nei campi ci sono esattamente i valori..
    Spero serva ad altri..
    ciao

    PS unica cosa.. Se lavorate in Pascal ricordatevi che il primo byte di una stringa è la lunghezza della stringa, quindi dovete aggiungere un carattere alla lunghezza della stringa.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ho visto la libreria, in pratica fa quello che ti dicevamo noi al posto tuo.
    Non so però quanto sia stabile e corretta ( farei parecchi test a riguardo ) anche perché pur essendo un progetto opensource non è aggiornata da quasi 2 anni (non poco).

    Se ti funziona buon per te
    RTFM Read That F*** Manual!!!

  10. #10
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    "La soluzione java per i sistemi real time ed embedded" = "se capisco chi sei ti straccio la eventuale laurea che hai preso" XDXD

    Buon per te che funzioni ma se hai tempo ti consiglierei cmq di impararlo java...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.