Re: Reversing a string

2019-01-11 Thread Mike James via Digitalmars-d-learn

On Friday, 11 January 2019 at 09:41:30 UTC, bauss wrote:

On Friday, 11 January 2019 at 08:25:41 UTC, Seb wrote:
On Friday, 11 January 2019 at 08:05:39 UTC, AndreasDavour 
wrote:

Hi.

I've just started to learn some D, so maybe this question is 
extremely stupid, but please bear with me.


[...]


Use .retro - it is also lazy and won't allocate:

https://run.dlang.io/is/A6bjrC


What a terrible name.


Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1


-=mike=-


Re: Hello World Example with Glade?

2015-09-11 Thread Mike James via Digitalmars-d-learn

On Friday, 11 September 2015 at 06:45:07 UTC, Mike McKee wrote:

On Friday, 11 September 2015 at 06:00:39 UTC, Mike McKee wrote:

[...]


I think the start of this probably looks like the following, 
but I'm not certain:


import gtk;
import gobject.Type;
import std.stdio;
import std.c.process;

int main (string[] args)
{
Main.init(args);
Builder b = new Builder();
b.addFromFile("test1.glade");
Window w = cast(Window)b.getObject("window1");
w.showAll();
Main.run();
return 0;
}


Hi Mike,

There's a Glade example in the demos/builder directory...

Regards, --



...so, this assumed that I had a test1.glade file, and that I 
had this line inside it:




So now I need to figure out how to get GtkD installed on Ubuntu 
Linux 14.04.




Re: Hello World Example with Glade?

2015-09-11 Thread Mike James via Digitalmars-d-learn

On Friday, 11 September 2015 at 07:13:22 UTC, Mike McKee wrote:

On Friday, 11 September 2015 at 06:53:07 UTC, Mike James wrote:

There's a Glade example in the demos/builder directory...


I'm having trouble installing GtkD on Ubuntu Linux 14.04. I did 
the apt steps from here:


http://d-apt.sourceforge.net/

$ sudo su
# wget 
http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list 
-O /etc/apt/sources.list.d/d-apt.list
# apt-get update && apt-get -y --allow-unauthenticated install 
--reinstall d-apt-keyring && apt-get update

# apt-get install libgtkd3-dev libgtkd3-doc

I then run the following and it fails:

# dmd test1.d
test1.d(1): Error: module gtk is in file 'gtk.d' which cannot 
be read

import path[0] = /usr/include/dmd/phobos
import path[1] = /usr/include/dmd/druntime/import



It looks last keep you're missing an import path 
(-Ipath_to_source). Check out 
http://dlang.org/dmd-linux.html#switches


Regards, --


Re: Hello World Example with Glade?

2015-09-11 Thread Mike James via Digitalmars-d-learn

On Friday, 11 September 2015 at 07:29:23 UTC, Mike McKee wrote:

On Friday, 11 September 2015 at 07:20:57 UTC, Mike James wrote:
It looks last keep you're missing an import path 
(-Ipath_to_source). Check out 
http://dlang.org/dmd-linux.html#switches


I tried this just now:

# dmd test1.d -I/usr/include/dmd/gtkd3/gtkc
/usr/include/dmd/gtkd3/gtkc/gtk.d(28): Error: module gtktypes 
is in file 'gtkc/gtktypes.d' which cannot be read

import path[0] = /usr/include/dmd/gtkd3/gtkc
import path[1] = /usr/include/dmd/phobos
import path[2] = /usr/include/dmd/druntime/import

It's saying that it can't read gtkc/gtktypes.d, but there is a 
file in path /usr/include/dmd/gtkd3/gtkc/gtktypes.d



try # dmd test1.d -I/usr/include/dmd/gtkd3

I'm using GtkD on Windows so there is a .../src directory with 
all the source files in.


regards, --


Re: Hello World Example with Glade?

2015-09-11 Thread Mike James via Digitalmars-d-learn

On Friday, 11 September 2015 at 07:47:15 UTC, Mike McKee wrote:

[...]


The undefined references mean you haven't provided a linker path 
to the GtkD libs.

Have you built the GtkD libraries?
Check out https://github.com/gtkd-developers/GtkD



Re: Reading and converting binary file 2 bits at a time

2015-08-29 Thread Mike James via Digitalmars-d-learn

On Saturday, 29 August 2015 at 20:15:53 UTC, Marc Schütz wrote:

Just cast to `Crumbs[]` directly:

import std.bitmanip;
import std.stdio;
import std.file;

struct Crumbs {
mixin(bitfields!(
ubyte, one,   2,
ubyte, two,   2,
ubyte, three, 2,
ubyte, four,  2
));
}

void main(string[] argv)
{
auto raw = read(binaryfile);
auto buffer = cast(Crumbs[]) raw;

foreach (cmb; buffer) {
writefln(Crumb one:   %s, cmb.one);
writefln(Crumb two:   %s, cmb.two);
writefln(Crumb three: %s, cmb.three);
writefln(Crumb four:  %s, cmb.four);
}
}


I like that :-)



Re: Reading and converting binary file 2 bits at a time

2015-08-27 Thread Mike James via Digitalmars-d-learn

On Thursday, 27 August 2015 at 09:00:02 UTC, Andrew Brown wrote:

Hi,

I need to read a binary file, and then process it two bits at a 
time. But I'm a little stuck on the first step. So far I have:


import std.file;
import std.stdio;

void main(){
  auto f = std.file.read(binaryfile);
  auto g = cast(bool[]) f;
  writeln(g);
}

but all the values of g then are just true, could you tell me 
what I'm doing wrong? I've also looked at the bitmanip module, 
I couldn't get it to help, but is that the direction I should 
be looking?


Thanks very much

Andrew


How about...

module main;

import std.bitmanip;
import std.stdio;

struct Crumbs {
@property ref ubyte whole() {
return m_whole;
}

union {
private ubyte m_whole;
mixin(bitfields!(
ubyte, one,   2,
ubyte, two,   2,
ubyte, three, 2,
ubyte, four,  2
));
}
}

void main(string[] argv)
{
ubyte[] buffer = [123, 12, 126, 244, 35];
Crumbs cmb;

foreach (octet; buffer) {
cmb.whole = octet;

writefln(Crumb:   %08b, octet);
writefln(Crumb one:   %s, cmb.one);
writefln(Crumb two:   %s, cmb.two);
writefln(Crumb three: %s, cmb.three);
writefln(Crumb four:  %s, cmb.four);
}
}


Regards, Mike.


Converting Java code to D

2015-04-20 Thread Mike James via Digitalmars-d-learn

Here is a fragment of Java code from an SWT program...

public enum LineStyle {
NONE(None),
SOLID(Solid),
DASH(Dash),
DOT(Dot),
DASHDOT(Dash Dot),
DASHDOTDOT(Dash Dot Dot);

public final String label;

private LineStyle(String label) {
this.label = label;
}
}

What would be the best ('canonical') way of translating it to D?

Regards,

-=mike=-


Re: Converting Java code to D

2015-04-20 Thread Mike James via Digitalmars-d-learn

On Monday, 20 April 2015 at 17:28:27 UTC, John Colvin wrote:

On Monday, 20 April 2015 at 17:24:30 UTC, bearophile wrote:

John Colvin:


struct LineStyle
{
  enum NONE = None;
  enum SOLID = Solid;
  enum DASH = Dash;
  enum DOT = Dot;
  enum DASHDOT = Dash Dot;
  enum DASHDOTDOT = Dash Dot Dot;

  string label;

  private this(string label)
  {
  this.label = label;
  }
}


The constructor doesn't look very useful.

Perhaps a named enum is safer.

Bye,
bearophile


True, the constructor doesn't really add anything here.

To be honest, the combination of enumeration and runtime 
variables in the Java code seems like a rubbish design, but 
perhaps there's a good reason for it that I'm not aware of.


Maybe they extended enum to get over the lack of structs.

Looking at the spec for java enums it appears that you can return
an enumeration or the associated string using the original code.

Regards, -=mike=-


Re: Beginner ?. Why does D suggest to learn java

2014-10-18 Thread Mike James via Digitalmars-d-learn

On Friday, 17 October 2014 at 08:44:00 UTC, Paulo  Pinto wrote:
On Friday, 17 October 2014 at 01:05:37 UTC, ketmar via 
Digitalmars-d-learn wrote:

On Fri, 17 Oct 2014 00:52:14 +
MachineCode via Digitalmars-d-learn 
digitalmars-d-learn@puremagic.com

wrote:

I don't understand. If at least it were C but java? why not D 
itself?
C is *awful* as beginner's language. never ever let people 
start with

C if you don't hate 'em.

as for D... current version of D can be used, but with some
precautions. we now have excellent book by Ali. (it's great, 
really! i
believe that it must be featured on the front dlang.org page!) 
but java

has alot more books and tutorials.

not that D is bad for beginners, it's just has a smaller 
userbase. and
all that things with classes are reference types and structs 
are not,
empty array is not empty array but is empty array and so on 
D may be
confusing a little. it's good to have some CS background to 
understood

that things.

just my cent and cent.



Better, go with FreePascal http://www.freepascal.org/ and 
discover all that those features that many C advocates spread 
as being close to the machine and other C only features, aren't 
exclusive of it.


Alongside support for real modules, OO and genericity.

Then with a head clean of bad C influences, jump into D.


--
Paulo


Don't tell him that - he may discover Freepascal/Lazarus is the 
holy grail of GUI programming and may never try D...  ;-)


-=mike=-


Re: Initialising multidimensional dynamic arrays

2014-10-01 Thread Mike James via Digitalmars-d-learn
On Tuesday, 30 September 2014 at 17:22:32 UTC, Steven 
Schveighoffer wrote:

On 9/30/14 12:40 PM, Mike James wrote:

On Tuesday, 30 September 2014 at 16:07:28 UTC, ketmar via
Digitalmars-d-learn wrote:



 auto a = new int[][](42, 69);


...



You'll notice that it's actually a dynamic array of structs 
containing

dynamic arrays - does this change your initializing?


That is what his code does.

-Steve


Hi Steve,

It's true that his code initialises an array of arrays - but my 
array is an array of structs containing a dynamic array.


Regards, -=mike=-


Re: Initialising multidimensional dynamic arrays

2014-10-01 Thread Mike James via Digitalmars-d-learn

On Tuesday, 30 September 2014 at 15:57:58 UTC, Mike James wrote:

Hi,

How do I initialise a dynamic array of dynamic arrays?

struct MyData {
  SysTime stamp;
  short[] data;

  this(size_t size) {
data = new short[size];
  }
}

MyDataArray mda;

how to initialise mda?

mda = new MyDataArray ?

Thanks.

Regards, -=mike=-


I think I've found a way...

struct MyData {
  SysTime stamp;
  short[] data;

  this(size_t size) {
data = new short[size];
  }
}

MyDataArray[] mda; --- sorry, missing the []s in the original 
question...


so in the constructor...

this(size_t x, size_t y) {
  mda = new MyDataArray[](x);
foreach(n, _; mda) mda[n].data.length = y;
}

Is there a simpler way?

Regards, -=mike=-


Re: Initialising multidimensional dynamic arrays

2014-10-01 Thread Mike James via Digitalmars-d-learn
On Wednesday, 1 October 2014 at 08:08:06 UTC, ketmar via 
Digitalmars-d-learn wrote:

On Wed, 01 Oct 2014 07:45:48 +
Mike James via Digitalmars-d-learn 
digitalmars-d-learn@puremagic.com

wrote:


so in the constructor...

this(size_t x, size_t y) {
   mda = new MyDataArray[](x);
 foreach(n, _; mda) mda[n].data.length = y;
}

Is there a simpler way?
sorry, but no. btw, if MyDataArray is struct, you should do 
this:


  foreach (ref m; mda) m.data.length = y;

or even this:

  foreach (ref m; mda = new MyDataArray[](x)) m.data.length = x;


the thing is that without 'ref' you operates on the local copy, 
not on

the real array element.


Thanks ketmar, that did the trick.

Regards, -=mike=-


Initialising multidimensional dynamic arrays

2014-09-30 Thread Mike James via Digitalmars-d-learn

Hi,

How do I initialise a dynamic array of dynamic arrays?

struct MyData {
  SysTime stamp;
  short[] data;

  this(size_t size) {
data = new short[size];
  }
}

MyDataArray mda;

how to initialise mda?

mda = new MyDataArray ?

Thanks.

Regards, -=mike=-


Re: Initialising multidimensional dynamic arrays

2014-09-30 Thread Mike James via Digitalmars-d-learn
On Tuesday, 30 September 2014 at 16:07:28 UTC, ketmar via 
Digitalmars-d-learn wrote:

On Tue, 30 Sep 2014 15:57:57 +
Mike James via Digitalmars-d-learn 
digitalmars-d-learn@puremagic.com

wrote:


How do I initialise a dynamic array of dynamic arrays?

do you mean something like this: `int[][] a`? if yes, do this:

  auto a = new int[][](42, 69);

and you'll get `int[42][69] a`.

heh, people again confused by `new Type[amount]` syntax. that is
concrete sign that this syntax will live forever.


Thanks ketmar,

You'll notice that it's actually a dynamic array of structs 
containing dynamic arrays - does this change your initializing?


Regards, -=mike=-


Re: dgui - Button continually repainting

2014-09-15 Thread Mike James via Digitalmars-d-learn

Hi Andre,

I've found a solution to the repainting problem. If you tick the 
Disable visual themes in the compatibility tab of the program 
properties (associated with the program icon) the button is only 
repainted when the mouse cursor enters and exits the button area.


Regards, -=mike=-

On Wednesday, 10 September 2014 at 19:46:06 UTC, andre wrote:

Hi,
Just noticed there is an event drawItem whichs is called on 
WM_DRAWITEM. Class core.controls.ownerdrawcontrol.d is very 
interesting.

This event seems more suitable.

Kind regards
André


On Wednesday, 10 September 2014 at 07:19:53 UTC, Mike James 
wrote:

//
Please file this issue also on the dgui

bibucket home page.

Kind regards
Andre


//

Done.

Regards, -=mike=-




Re: dgui - Button continually repainting

2014-09-10 Thread Mike James via Digitalmars-d-learn

//
Please file this issue also on the dgui

bibucket home page.

Kind regards
Andre


//

Done.

Regards, -=mike=-


dgui - Button continually repainting

2014-09-09 Thread Mike James via Digitalmars-d-learn

Hi.

I've created a graphic button as per this example on the dgui 
website:


import dgui.all;

class MyForm: Form
{
this()
{
text = An Exception was thrown...;
size = Size(130, 100);

// Or use `Bitmap.fromFile`:
auto img = new Bitmap(90, 15, SystemColors.yellow);
auto pen = SystemPens.blackPen;

with(new Button())
{
bounds = Rect(10, 10, 100, 25);
parent = this;
paint.attach((s, e)
{
e.canvas.drawImage(img, 5, 5);
e.canvas.drawLine(pen, 5, 10, 95, 10);
e.canvas.drawLine(pen, 10, 5, 10, 20);
});
}
}
}

int main()
{
return Application.run(new MyForm());
}

and added a writeln(paint) in the paint.attach to show when the 
button is repainting. When the form with the button is visible 
the button is being continually repainted. Is this a 'feature' of 
dgui or is there a flag to set to only re-paint when the button 
is invalidated?


Regards, -=mike=-.


DMD Compiler - lexer

2014-08-29 Thread Mike James via Digitalmars-d-learn

Hi,

Looking at the DMD Source Guide it says The lexer transforms the 
file into an array of tokens.


Why is this step taken instead of, say, just calling a function 
that returns the next token (or however many required for the 
look-ahead)?


Regards,
  -=mike=-


Re: Command Line Application in D

2014-08-05 Thread Mike James via Digitalmars-d-learn

On Monday, 4 August 2014 at 22:03:24 UTC, TJB wrote:
On Monday, 4 August 2014 at 21:58:09 UTC, maarten van damme via 
Digitalmars-d-learn wrote:

I am a little bit confused as to what you want.
There is a command line example at dlang.org, and there exists 
a program

(rdmd) that compiles several D files and runs them.
http://dlang.org/rdmd.html


Sorry. I wasn't very clear. Say I want to find all of the files 
that have a certain extension within a directory and process 
them somehow at the command line. How could I do that?


Have a look at the function dirEntries in std.file.

regards,

-mike-