2016-03-21 5 views
1

Ich brauche ein paar Tipps/Hilfe mit einem meiner Home-Projekt in Ada. Also muss ich ein J_String_Package machen, aber ich kann nicht wirklich meinen J_string Typ darstellen. Die Spezifikation fordert mich auf: "den J_String-Typ als undurchsichtigen Diskriminanten-Datensatz darzustellen. Für die innere Darstellung des Strings verwenden Sie den Standard-String-Typ. Der Diskriminant bestimmt die Größe des Strings, der im J_String-Typ enthalten ist." Mein .ads so weit:Ada: Wie eine Java-Zeichenfolge darstellen?

package J_String_Pkg is 
    type J_String(Size: Positive) is limited private; 

    --methods etc  

private 
    type J_String(Size: Positive) is record 
     --i need some help here!! :) 
    end record; 
end J_String_Pkg; 

Vielen Dank für jede Hilfe!

Antwort

3

Sie brauchen etwas wie folgt aus:

type J_String(Size: Positive) is record 
    Contents : String (1 .. Size); 
end record; 

, die eng mit einem der Beispiele im Ada Reference Manual (ARM 3.7(33)) entspricht.

Eine Sache, auf die Sie achten sollten: Ihr Code, ohne einen Standard für die Diskriminante, bedeutet, dass Sie die Size eines J_String nicht ändern können. Das Beispiel aus dem ARM,

type Buffer(Size : Buffer_Size := 100) is 
    record 
     Pos : Buffer_Size := 0; 
     Value : String(1 .. Size); 
    end record; 

tut können Sie die Größe einer Instanz ändern, auf Kosten der preallocating Buffer_Size Zeichen (jedenfalls mit GNAT). Sie tun nicht wollen dies mit Positive; Die meisten Computer verfügen nicht über 2 Gigabyte RAM!

+0

Danke, es funktioniert gut! :) – DaniFreecs