11. Anlagen
 
Fenster schliessen
with interfaces.c;
with interfaces.c.pointers;
with interfaces.c.strings;
with text_io; use text_io;
procedure test_pointers is
package c renames interfaces.c;
use c;
package char_ptrs is
new c.pointers (index => c.size_t,
element => c.char,
element_array => c.char_array,
default_terminator => c.nul);
use type char_ptrs.pointer;
subtype char_star is char_ptrs.pointer;
quelle : c.char_array (0..10);
ziel : c.char_array (0..10);
zeiger_ziel : char_star;
zeiger_quelle : char_star;
procedure zeichenkette_kopieren (ziel_ptr,
quelle_ptr : char_star)is
ziel_temp_ptr : char_star := ziel_ptr;
quelle_temp_ptr : char_star := quelle_ptr;
element : C.char;
begin
if ziel_temp_ptr = null or quelle_temp_ptr = null then
raise c.strings.dereference_error;
end if;
loop
element := quelle_temp_ptr.all;
ziel_temp_ptr.all := element;
exit when element = c.nul;
char_ptrs.increment(ziel_temp_ptr);
char_ptrs.increment(quelle_temp_ptr);
end loop;
end zeichenkette_kopieren;
begin
quelle := c.to_c("ada 95 ");
zeiger_quelle := some_array_quelle (0)'access;
ziel := c.to_c(" ");
zeiger_ziel := some_array_ziel (0)'access;
zeichenkette_kopieren (zeiger_ziel, zeiger_quelle);
put(c.to_ada(char_ptrs.value(zeiger_ziel))); new_line;
end Test_pointers;


Fenster schliessen


 
zurück
  Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.