473,404 Members | 2,170 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,404 software developers and data experts.

NEED HELP WITH A PROGRAM....ANYONE PLEASE HELP!

QUESTION:
Write a program that opens and read a text file and records how many
times each word occurs in the file. Use a binary search tree modified
to store both a word and the number of times it occurs. After the
program has read the file, it should offer a menu with three choices.
the first is to list all the words along with the number of occurences.
The second is to let you enter a word, with the program reporting how
many times the word occured in the file. The third is to quit.

This quesiton is from the book C Primer Plus 5th edition by Stephen
Prata. Chapter 17 question 7. I read the chapter twice and can't figure
out how to write this program. Is there anyone out there who can give
me the code for this program. I am desperate. Maybe I could pay whoever
can give me the code.

Jun 8 '06
66 5262
ge**********@hotmail.com writes:
osmium wrote:
<ge**********@hotmail.com> wrote:
> ok so what do u suggest me using it instead of true = 0 ?


I suggest you use truex
> i also made the changes you suggested.....


So how far did it get, what test messages did you see?

I get the fgets() error when i try to run it.......i dont know if i am
using the command wrong but i posted a portion of my code.


What exactly does "I get the fgets() error" mean?

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Jun 13 '06 #51
Dann Corbit wrote:
Some people are really just not cut out to be programmers.


Or university students, for that matter. I get the feeling that the
guy did not actually write the code that was "his attempt so far".

Jun 13 '06 #52
<ge**********@hotmail.com> wrote:
I get the fgets() error when i try to run it.......i dont know if i am
using the command wrong but i posted a portion of my code.
As for truex command......i never used it and don't know how to use it.


You have certainly tried hard enough and I can see you have invested a lot
of time in this. But you ignored my early advice about breaking things down
into pieces. You have one huge function called, roughly, createbinarytree.
That function opens a file, reads from the file, finds the words, and adds
the words to a tree. You need to assign responsibility to a group of
functions that each do one thing and do it well. Eventually, you will need
a menu. Remember I told you to defer that? At this point in the learning
process, a menu is just a time consuming distraction.

I think in terms of plateaus. The first plateau is to construct a tree
containing words, without such a tree none of the other stuff called for can
happen. There are three parts to reaching this first plateau. Opening and
reading a file, isolating the words, and adding the words to a tree. I give
code below that reads the file and isolates the words. I suppose there are
bugs in it, but it passes some cursory checks. Note that isolating the
function like this will make it possible to fairly easily refine the
definition of a word later on, remember that I said this was a first cut at
a definition. The code could be made more compact and cryptic than it is.

Now you need to write a function something like this:
void add_word(struct* Node tree, char* word);

The first parameter identifies the tree and the second identifies the word
to be added. With a modern computer there is no reason to fail so the
return is simply void. The fist entry added will be an "odd-ball" and the
way I would do it would require unique logic for that particular case.

The code below was tested with the file testtree.txt which is attached to a
message in alt.test named "tree tree tree". You will probably recognize the
text of the message. Copy that file to the directory your compiler is using
for the source code you write. My news server does not let me attach files
to posts to this news group.

------------
#include <stdio.h>
#include <ctype.h>

char* fn = "testtree.txt";
// finds next word in line and returns a pointer to it.
// writes '\0' in line, thus destroying original content
// returns NULL if no word could be found.
char* get_word(char* line)
{
char ch;
char* start;
static char* resume;
if(resume)
line = resume; // continue parsing original string
// skip non letters
while(1)
{
if(*line == 0)
{
resume = 0;
return NULL; // end of line
}
ch = *line++;
ch = tolower(ch);
if(islower(ch))
{
start = --line; // undo premature advance
break;
}
}
// have the beginning of a word.
// now find the end of the word
while(1)
{
ch = *line++;
ch = tolower(ch);
if(!islower(ch))
{
// remember where to continue from
resume = line;
// mark this as the end of a C string
line--;
*line = '\0';
// was used for intial testing
//printf("%s\n", start);
return start;
}
} // end while
} // end function
//========================
int main(void)
{
FILE* in;
char buffer[1000];
char* wd;
char* status;
in = fopen(fn, "r");
if(!in)
{
printf("Can't open file\n");
getchar();
return 1;
}
while(1)
{
status = fgets(buffer, 999, in);
if(!status)
{
printf("EOF encountered\n");
getchar();
break;
}
while(wd = get_word(buffer))
printf("%s\n", wd);
}
getchar();
return 0;
}

Jun 13 '06 #53

osmium wrote:
<ge**********@hotmail.com> wrote:
I get the fgets() error when i try to run it.......i dont know if i am
using the command wrong but i posted a portion of my code.
As for truex command......i never used it and don't know how to use it.


You have certainly tried hard enough and I can see you have invested a lot
of time in this. But you ignored my early advice about breaking things down
into pieces. You have one huge function called, roughly, createbinarytree.
That function opens a file, reads from the file, finds the words, and adds
the words to a tree. You need to assign responsibility to a group of
functions that each do one thing and do it well. Eventually, you will need
a menu. Remember I told you to defer that? At this point in the learning
process, a menu is just a time consuming distraction.

I think in terms of plateaus. The first plateau is to construct a tree
containing words, without such a tree none of the other stuff called for can
happen. There are three parts to reaching this first plateau. Opening and
reading a file, isolating the words, and adding the words to a tree. I give
code below that reads the file and isolates the words. I suppose there are
bugs in it, but it passes some cursory checks. Note that isolating the
function like this will make it possible to fairly easily refine the
definition of a word later on, remember that I said this was a first cut at
a definition. The code could be made more compact and cryptic than it is.

Now you need to write a function something like this:
void add_word(struct* Node tree, char* word);

The first parameter identifies the tree and the second identifies the word
to be added. With a modern computer there is no reason to fail so the
return is simply void. The fist entry added will be an "odd-ball" and the
way I would do it would require unique logic for that particular case.

The code below was tested with the file testtree.txt which is attached to a
message in alt.test named "tree tree tree". You will probably recognize the
text of the message. Copy that file to the directory your compiler is using
for the source code you write. My news server does not let me attach files
to posts to this news group.

------------
#include <stdio.h>
#include <ctype.h>

char* fn = "testtree.txt";
// finds next word in line and returns a pointer to it.
// writes '\0' in line, thus destroying original content
// returns NULL if no word could be found.
char* get_word(char* line)
{
char ch;
char* start;
static char* resume;
if(resume)
line = resume; // continue parsing original string
// skip non letters
while(1)
{
if(*line == 0)
{
resume = 0;
return NULL; // end of line
}
ch = *line++;
ch = tolower(ch);
if(islower(ch))
{
start = --line; // undo premature advance
break;
}
}
// have the beginning of a word.
// now find the end of the word
while(1)
{
ch = *line++;
ch = tolower(ch);
if(!islower(ch))
{
// remember where to continue from
resume = line;
// mark this as the end of a C string
line--;
*line = '\0';
// was used for intial testing
//printf("%s\n", start);
return start;
}
} // end while
} // end function
//========================
int main(void)
{
FILE* in;
char buffer[1000];
char* wd;
char* status;
in = fopen(fn, "r");
if(!in)
{
printf("Can't open file\n");
getchar();
return 1;
}
while(1)
{
status = fgets(buffer, 999, in);
if(!status)
{
printf("EOF encountered\n");
getchar();
break;
}
while(wd = get_word(buffer))
printf("%s\n", wd);
}
getchar();
return 0;
}


void add_word(struct* Node tree, char* word);
i get syntax error before '*' for this line

Jun 13 '06 #54

ge**********@hotmail.com wrote:
osmium wrote:
<ge**********@hotmail.com> wrote:
I get the fgets() error when i try to run it.......i dont know if i am
using the command wrong but i posted a portion of my code.
As for truex command......i never used it and don't know how to use it.


You have certainly tried hard enough and I can see you have invested a lot
of time in this. But you ignored my early advice about breaking things down
into pieces. You have one huge function called, roughly, createbinarytree.
That function opens a file, reads from the file, finds the words, and adds
the words to a tree. You need to assign responsibility to a group of
functions that each do one thing and do it well. Eventually, you will need
a menu. Remember I told you to defer that? At this point in the learning
process, a menu is just a time consuming distraction.

I think in terms of plateaus. The first plateau is to construct a tree
containing words, without such a tree none of the other stuff called for can
happen. There are three parts to reaching this first plateau. Opening and
reading a file, isolating the words, and adding the words to a tree. I give
code below that reads the file and isolates the words. I suppose there are
bugs in it, but it passes some cursory checks. Note that isolating the
function like this will make it possible to fairly easily refine the
definition of a word later on, remember that I said this was a first cut at
a definition. The code could be made more compact and cryptic than it is.

Now you need to write a function something like this:
void add_word(struct* Node tree, char* word);

The first parameter identifies the tree and the second identifies the word
to be added. With a modern computer there is no reason to fail so the
return is simply void. The fist entry added will be an "odd-ball" and the
way I would do it would require unique logic for that particular case.

The code below was tested with the file testtree.txt which is attached to a
message in alt.test named "tree tree tree". You will probably recognize the
text of the message. Copy that file to the directory your compiler is using
for the source code you write. My news server does not let me attach files
to posts to this news group.

------------
#include <stdio.h>
#include <ctype.h>

char* fn = "testtree.txt";
// finds next word in line and returns a pointer to it.
// writes '\0' in line, thus destroying original content
// returns NULL if no word could be found.
char* get_word(char* line)
{
char ch;
char* start;
static char* resume;
if(resume)
line = resume; // continue parsing original string
// skip non letters
while(1)
{
if(*line == 0)
{
resume = 0;
return NULL; // end of line
}
ch = *line++;
ch = tolower(ch);
if(islower(ch))
{
start = --line; // undo premature advance
break;
}
}
// have the beginning of a word.
// now find the end of the word
while(1)
{
ch = *line++;
ch = tolower(ch);
if(!islower(ch))
{
// remember where to continue from
resume = line;
// mark this as the end of a C string
line--;
*line = '\0';
// was used for intial testing
//printf("%s\n", start);
return start;
}
} // end while
} // end function
//========================
int main(void)
{
FILE* in;
char buffer[1000];
char* wd;
char* status;
in = fopen(fn, "r");
if(!in)
{
printf("Can't open file\n");
getchar();
return 1;
}
while(1)
{
status = fgets(buffer, 999, in);
if(!status)
{
printf("EOF encountered\n");
getchar();
break;
}
while(wd = get_word(buffer))
printf("%s\n", wd);
}
getchar();
return 0;
}


void add_word(struct* Node tree, char* word);
i get syntax error before '*' for this line


ok so fgets was giving me errors....so i removed it and put scanf
instead. now my program runs without errors. but when i put a file name
to run it.....it gives me segmentation fault.

int createBinaryTree()
{
char fd[1024]; //Textual Data Pointer
char *token;
int check = 0;
int counter = 1;
int true = 1;

printf("\n\t\t---------------------------------------");
printf("\n\t\t------- Frequency of Words ---------");
printf("\n\t\t---------------------------------------");
printf("\n\n\t\tPlease enter the text file name : ");
scanf("%s",&fileName);

printf("\n\t\t---------------------------------------");
printf("\n\n\t\t\tReading file");
// delay(500);
printf(".");
// delay(100);
printf(".");
// delay(100);
printf(".");
// delay(100);
printf(".");
// delay(100);
if ((fp = fopen(fileName, "r")) ==NULL){
printf("\n\n\t\t\tError reading file.");
getchar();
return 1;
}

else {

fgets(fd, fileSize(fp) + 1, fp);
fclose(fp); //Close the file

token = strtok(fd," ");
if (token == NULL) {
printf("\n\n\t\tThe text file is empty.");
true = 0; //So that loop is not entered
getchar();
return 1; //Don't show the menu
}
else {
node = (struct tree *)malloc(sizeof(struct tree));
(*node).word = token;
(*node).count = 1;
node->right = NULL;

sptr=node;
q=node;

Jun 13 '06 #55
<ge**********@hotmail.com> wrote:
void add_word(struct* Node tree, char* word);
i get syntax error before '*' for this line


Node is a user defined type which you haven't defined. Remember this?::

struct Node
{
char* wd;
int ct;
struct Node* left_child;
struct Node* right_child;
};

Put that right below the include files, which will make it global scope.


Jun 13 '06 #56
<ge**********@hotmail.com> wrote:
ok so fgets was giving me errors....so i removed it and put scanf
instead. now my program runs without errors. but when i put a file name
to run it.....it gives me segmentation fault.

int createBinaryTree()
{
char fd[1024]; //Textual Data Pointer
char *token;
int check = 0;
int counter = 1;
int true = 1;

printf("\n\t\t---------------------------------------");
printf("\n\t\t------- Frequency of Words ---------");
printf("\n\t\t---------------------------------------");
printf("\n\n\t\tPlease enter the text file name : ");
scanf("%s",&fileName);

<snip>

I suggest you give up on this code. There is way too much wrong with it, it
is like putting parches on patches. There was simply no structure there.
Try building on the base I posted earlier today. If you feel uncomfortable
with foreign code (mine) you could start from scratch and build a tree as a
separate effort and meld the two pieces of code later.
Jun 13 '06 #57
"osmium" <r1********@comcast.net> writes:
<ge**********@hotmail.com> wrote:
void add_word(struct* Node tree, char* word);
i get syntax error before '*' for this line
Node is a user defined type which you haven't defined. Remember this?::

struct Node
{

[snip] };

Put that right below the include files, which will make it global scope.


That won't help. The name of the type is "struct Node"; you can't
insert a "*" into the middle of the name, whether it's been defined or
not.

struct* Node tree
is a syntax error. To declare "tree" as a pointer to a struct node use:
struct Node *tree

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Jun 13 '06 #58
osmium wrote:

I suggest you give up on this code. There is way too much wrong with
it, it is like putting parches on patches. There was simply no
structure there. Try building on the base I posted earlier today. If
you feel uncomfortable with foreign code (mine) you could start from
scratch and build a tree as a separate effort and meld the two pieces
of code later.

I think this is sound advice. The program is too big and too flawed.
The OP should start again, and start small. Learn to read in the
filename first. Then open the file. Build up the pieces. Learn how to
stub out functions.


Brian
Jun 13 '06 #59

osmium wrote:
<ge**********@hotmail.com> wrote:
ok so fgets was giving me errors....so i removed it and put scanf
instead. now my program runs without errors. but when i put a file name
to run it.....it gives me segmentation fault.

int createBinaryTree()
{
char fd[1024]; //Textual Data Pointer
char *token;
int check = 0;
int counter = 1;
int true = 1;

printf("\n\t\t---------------------------------------");
printf("\n\t\t------- Frequency of Words ---------");
printf("\n\t\t---------------------------------------");
printf("\n\n\t\tPlease enter the text file name : ");
scanf("%s",&fileName);

<snip>

I suggest you give up on this code. There is way too much wrong with it, it
is like putting parches on patches. There was simply no structure there.
Try building on the base I posted earlier today. If you feel uncomfortable
with foreign code (mine) you could start from scratch and build a tree as a
separate effort and meld the two pieces of code later.


well thanks for your help....i appreciate it! you are right, this code
is getting more and more complex everytime i change something to it.
The only reason I came here for help is because my teacher assingned
this question without even teaching us the chapter and now he went on
vacation. I have to do this program in order to pass the class. Also
teachers in Ontario Canada went on strike for three weeks during school
year. That messed up the entire schedule for students and now we have
to cover topics on our own. Anyways thanks for your help! I'll just
hand it in like this.....maybe i'll get partial credit.

Jun 13 '06 #60
Old Wolf wrote:
Dann Corbit wrote:
Some people are really just not cut out to be programmers.


Or university students, for that matter. I get the feeling that the
guy did not actually write the code that was "his attempt so far".

agreed frank
Jun 13 '06 #61
ge**********@hotmail.com wrote:

osmium wrote:

I suggest you give up on this code. There is way too much wrong
with it, it is like putting parches on patches. There was simply
no structure there. Try building on the base I posted earlier
today. If you feel uncomfortable with foreign code (mine) you
could start from scratch and build a tree as a separate effort and
meld the two pieces of code later.


well thanks for your help....i appreciate it! you are right, this code
is getting more and more complex everytime i change something to it.
The only reason I came here for help is because my teacher assingned
this question


You see, you withheld vital information. You should have told us what
the exact assignment was.

Brian
Jun 13 '06 #62

Default User wrote:
ge**********@hotmail.com wrote:

osmium wrote:

I suggest you give up on this code. There is way too much wrong
with it, it is like putting parches on patches. There was simply
no structure there. Try building on the base I posted earlier
today. If you feel uncomfortable with foreign code (mine) you
could start from scratch and build a tree as a separate effort and
meld the two pieces of code later.


well thanks for your help....i appreciate it! you are right, this code
is getting more and more complex everytime i change something to it.
The only reason I came here for help is because my teacher assingned
this question


You see, you withheld vital information. You should have told us what
the exact assignment was.

I did go see the first post I posted. Its all here!


Jun 13 '06 #63
ge**********@hotmail.com wrote:

Default User wrote:
ge**********@hotmail.com wrote:

osmium wrote:
> I suggest you give up on this code. There is way too much wrong
> with it, it is like putting parches on patches. There was
> simply no structure there. Try building on the base I posted
> earlier today. If you feel uncomfortable with foreign code
> (mine) you could start from scratch and build a tree as a
> separate effort and meld the two pieces of code later.

well thanks for your help....i appreciate it! you are right, this
code is getting more and more complex everytime i change
something to it. The only reason I came here for help is because
my teacher assingned this question


You see, you withheld vital information. You should have told us
what the exact assignment was.

I did go see the first post I posted. Its all here!

Ok, you mention the assignment I see, but where did this mess of code
from? The teacher didn't assign you to modify this code and make it fit
that problem. You were assigned to write a solution, and that's what
we've been telling you. Scrap this code, wherever you got it, start
from the beginning and write it piece by piece. We will assist in this.

Brian

Jun 14 '06 #64
ge**********@hotmail.com writes:
Default User wrote:
ge**********@hotmail.com wrote:
> osmium wrote:
> > I suggest you give up on this code. There is way too much wrong
> > with it, it is like putting parches on patches. There was simply
> > no structure there. Try building on the base I posted earlier
> > today. If you feel uncomfortable with foreign code (mine) you
> > could start from scratch and build a tree as a separate effort and
> > meld the two pieces of code later.
>
> well thanks for your help....i appreciate it! you are right, this code
> is getting more and more complex everytime i change something to it.
> The only reason I came here for help is because my teacher assingned
> this question


You see, you withheld vital information. You should have told us what
the exact assignment was.

I did go see the first post I posted. Its all here!


(Please don't prefix your own text with ">"; it makes it look like
you're quoting someone else, and can lead to significant confusion.)

Yes, a quick look at groups.google.com indicates that you did post the
original problem statement. Quite possibly a lot of people didn't pay
much attention; questions of the form "Here's my homework assignment;
help me!" with no attempt to solve the problem tend not to be taken
seriously.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Jun 14 '06 #65
ge**********@hotmail.com wrote:
The only reason I came here for help is because my teacher assingned
this question without even teaching us the chapter and now he went on
vacation. I have to do this program in order to pass the class. Also
teachers in Ontario Canada went on strike for three weeks during school
year. That messed up the entire schedule for students and now we have
to cover topics on our own.


They were back from the strike on 27 March. It's now June. The winter
semester ended 28 April. Your faculty is on vacation until mid-August, but
the summer semester (now) has its own faculty teaching courses. WTF?

Robert
--
Robert Allison
Pine Ridge
Jun 14 '06 #66
In article <Ac********************@bt.com>,
Richard Heathfield <in*****@invalid.invalid> wrote:
ge**********@hotmail.com said:
Hey Keith guess what?!
right now i am too stressed out to even think about your stupid top
posting stuff!


If you can't learn the very simple task of posting a Usenet article in such
a way that it is easy and pleasant to read, it would be a good idea to pick
a discipline less difficult than programming. Marketing springs to mind.
Or, since you seem to prefer heaping abuse on others, perhaps management is
your cup of tea.
i am here for some answers! so if you have them then let it
out.......otherwise try not to post you suggestions, because its waste
of my time to come and read stupid comments that are not relevent to my
question.


You know, the guy *did* stipulate somewhere along the way (not
necessarily in the original posting, although one could probably have
read it between the lines even there) that he's not a programmer, has no
desire to be one, and really doesn't give a sh*t about this program. He
was forced to take the class, and just wants to pass the class, so he
can graduate, so he can get the g*d da**ed piece of paper to hang on his
wall.

Now, I know that these are not legitimate goals, by the lights of the
so-called "regulars" in this group. And I know, from long experience,
that you guys will never accept these as valid goals. But it does seem
like you might work on acting just a little bit less surprised when you
run into people who have (only) these sorts of goals.

Jun 18 '06 #67

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: John Flynn | last post by:
hi all i'm going to be quick i have an assignment due which i have no idea how to do. i work full time so i dont have the time to learn it and its due date has crept up on me .. As follows:...
6
by: Rafael | last post by:
Hi Everyone, I need some help with my calculator program. I need my program to do 2 arguments and a 3rd, but the 3rd with different operators. Any help would be great. Here is my code.... ...
8
by: skumar434 | last post by:
i need to store the data from a data base in to structure .............the problem is like this ....suppose there is a data base which stores the sequence no and item type etc ...but i need only...
5
by: Y2J | last post by:
I am working through this book on C++ programming, the author is speaking of using linked lists. He gave and example which I found confusing to say the least. So I rewrote the example in a way that...
1
by: peterggmss | last post by:
This is a slot machine game, 2 forms. One is the actual game (frmMachine) and the other is in the background and randomizes the images shown on frmMachine. I need to make frmMachine wait for...
8
by: David Thielen | last post by:
Hi; In our setup program how do I determine if I need to run "aspnet_regiis –i" and if so, is there an API I can calll rather than finding that program on the user's disk and calling it? --...
0
by: south622 | last post by:
I'm taking a beginning Java course and I'm stuck in week eight of a nine week course. If anyone could help me I would greatly appreciate it. This assignment was due yesterday and each day I go past...
4
by: jp112 | last post by:
In this program, I am suppose to enter an amount that the customer owes, how much he/she paid, and their change. I already figured that out, what I can't figure out is that the program should also...
0
by: jerger | last post by:
I posted this in ASP... does it belong here instead? I have converted my dictionary program into a simple asp program. It works great... but I now want to add speech functionality but have not had...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.