[Gambas-user] [Fwd: Gambas3 Pointers example] signal #6

Demosthenes Koptsis demosthenesk at ...626...
Mon Jan 17 12:20:49 CET 2011


On Mon, 2011-01-17 at 22:00 +1100, Ian Haywood wrote:
> On Mon, Jan 17, 2011 at 9:50 PM, Demosthenes Koptsis
> <demosthenesk at ...626...> wrote:
> >
> > Benoit sorry if you feel that i discuss C++ cases in a Gambas list but i
> > try to describe some cases of pointers and the usage of them in Gambas.
> IMHO the issue is C pointers aren't an easy topic and good conceptual
> understanding
> is important. Anyone who contemplates interfacing with a C API using
> pointers would need to sit down and read a standard C textbook to get a proper
> understanding: it's not something where you can give a few "quick tips" in a
> Gambas manual and then people can actually go away and use them.
> Similarly I can see how it's hard for Benoit and others to answer your questions
> without launching into a ten-page tutorial on C pointers.

Yes and this will be the answers for any newbie who will start with
external functions.

i dont think that C++ programmers will come to Gambas to use external
functions, the opposite i think will be.

Gambas users will learn the basics of C++ and start use Gambas.

My case is that.

On the other hand i am not completely unaware of C++.
i just have not used to man(3) yet as it is expected.

> More importantly they have no other use in the language, so there's no point
> learning about gambas pointers unless you are prepared to learn C anyway.
> 
> My advice would be to make a choice:
> 1. sit down and learn basic C and how to use C pointers, then come
> back to this problem

i have already did this basic steps.
now i study other things as how c++ functions implements in Gambas.
The answer of Benoit was right about how to free a pointer,

cases which use Free() instruction of Gambas or
cases which call external functions to free a pointer which is declared
in Gambas.

This is a detail not easily shown and i must describe it for a Gambas
user, it is good to know it.


> 2. leave Gambas pointers alone and concentrate on other sections

> Ian
> 
> ------------------------------------------------------------------------------
> Protect Your Site and Customers from Malware Attacks
> Learn about various malware tactics and how to avoid them. Understand 
> malware threats, the impact they can have on your business, and how you 
> can protect your company and customers by using code signing.
> http://p.sf.net/sfu/oracle-sfdevnl
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user


so, in previous example i think it works like this,

' Gambas module file
'char *get_current_dir_name(void);
Extern get_current_dir_name() As Pointer In "libc:6"
'void free(void *ptr);
Extern free_ptr(ptr As Pointer) In "libc:6" Exec "free"


Public Sub Main()

  Dim pFunc As Pointer
  Dim sWorkingDirectory As String

'get_current_dir_name
  pFunc = get_current_dir_name()
  Print pFunc
  
  sWorkingDirectory = Str@(pFunc)
  Print sWorkingDirectory

  free_ptr(pFunc)
  pFunc = 0

End

and i hope these examples and these cases will be helpful for anyone.


-- 
Regards,
Demosthenes Koptsis.





More information about the User mailing list