I totally bombed this question in an interview so I'm posting my answer here
for comments and suggestions... perhaps (god help me) I'm just not that
bright, but this works and seems to be fairly efficent. The idea was simple,
insert an integer into a list that has already been sorted.
private int[] _list;
....
public void Insert(int value)
{
int[] tempArray;
// check for special cases
if (this._list == null)
{ // first item added create new array
this._list = new int[1];
this._list[0] = value;
return;
}
else if (this._list[this._list.Leng th-1] <= value)
{ // item to be added is greater than the last
// item in the array, append item to end
tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, tempArray, this._list.Leng th);
this._list = tempArray;
this._list[this._list.Leng th-1] = value;
return;
}
else if (this._list[0] >= value)
{ // item to be added is less than the first
// item in the array, insert item to the beginning
tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, 0, tempArray, 1, this._list.Leng th);
this._list = tempArray;
this._list[0] = value;
return;
}
int left = 0;
int right = this._list.Leng th;
int middle = 0;
int mod = 0;
// binary search loop
while (left <= right)
{
// modify the pivot point
middle = (left + right) / 2;
if (value > this._list[middle])
{ // item is greater than the pivot point
//Debug.WriteLine (value + " > " + this._list[middle]);
mod = 1;
left = middle + 1;
}
else if (value < this._list[middle])
{ // item is less than the pivot point
//Debug.WriteLine (value + " < " + this._list[middle]);
mod = 0;
right = middle - 1;
}
else
{ // item is equal to the pivot point
//Debug.WriteLine (value + " = " + this._list[middle]);
break;
}
}
// modify the pivot point again
middle += mod;
// rebuild array to allow space for new item
tempArray = new int[this._list.Leng th+1];
Array.Copy(this ._list, 0, tempArray, 0, middle);
Array.Copy(this ._list, middle, tempArray, middle+1, tempArray.Lengt h -
(middle +1));
// insert new item
this._list = tempArray;
this._list[middle] = value;
} 10 11622
I have not read the code too closely, but here is what I see that could
improve performance slightly (depending on how the Array.Copy is
implemented).
Toward the end, you have two copy statements which copy each half of the
array leaving a gap for the new number.
One suggestion (and forgive me if I am too obsessive compulsive) is that
rather then two, it might be more efficient to make just one call to
Array.Copy to an array that is one bigger. Doing this will leave the last
element undefined. Then insert your value as the last element, then swap
the last element with the pivot value. If Array.Copy was efficient, it
would do a memory copy rather then enumerating the values (like I said, I
don't really know the implementation) .
Don't know if it would do anything but just a thought.
"Ryan Graham" <ry****@earthli nk.net> wrote in message
news:kc******** *********@newsr ead3.news.pas.e arthlink.net... I totally bombed this question in an interview so I'm posting my answer here for comments and suggestions... perhaps (god help me) I'm just not that bright, but this works and seems to be fairly efficent. The idea was simple, insert an integer into a list that has already been sorted.
private int[] _list; ... public void Insert(int value) { int[] tempArray;
// check for special cases if (this._list == null) { // first item added create new array
this._list = new int[1]; this._list[0] = value; return; } else if (this._list[this._list.Leng th-1] <= value) { // item to be added is greater than the last // item in the array, append item to end
tempArray = new int[this._list.Leng th+1]; Array.Copy(this ._list, tempArray, this._list.Leng th); this._list = tempArray; this._list[this._list.Leng th-1] = value;
return; } else if (this._list[0] >= value) { // item to be added is less than the first // item in the array, insert item to the beginning
tempArray = new int[this._list.Leng th+1]; Array.Copy(this ._list, 0, tempArray, 1, this._list.Leng th); this._list = tempArray; this._list[0] = value;
return; }
int left = 0; int right = this._list.Leng th; int middle = 0; int mod = 0;
// binary search loop while (left <= right) { // modify the pivot point middle = (left + right) / 2;
if (value > this._list[middle]) { // item is greater than the pivot point
//Debug.WriteLine (value + " > " + this._list[middle]); mod = 1; left = middle + 1; } else if (value < this._list[middle]) { // item is less than the pivot point
//Debug.WriteLine (value + " < " + this._list[middle]);
mod = 0; right = middle - 1; } else { // item is equal to the pivot point
//Debug.WriteLine (value + " = " + this._list[middle]); break; } }
// modify the pivot point again middle += mod;
// rebuild array to allow space for new item tempArray = new int[this._list.Leng th+1]; Array.Copy(this ._list, 0, tempArray, 0, middle); Array.Copy(this ._list, middle, tempArray, middle+1, tempArray.Lengt h - (middle +1));
// insert new item this._list = tempArray; this._list[middle] = value; }
Here is a quite simple version. And a few comments:
* Array class contains a static binary search method.
* No need to special case first, last item. Just Array.Copy zero items
* Unless null array is needed for some reason it is easier to just
make the private array zero length at initalization. That way there is
no need to employ null checks in all methods manipulating it.
private int[] array = new int[0];
public void Insert(int value)
{
int[] newArray = new int[array.Length+1];
//Array is sorted so we can use binary search to find insert spot
int spot = Array.BinarySea rch(array, value);
//If value is not found, spot is set to the negative of the next
//higher value's index.
if (spot < 0)
spot = -spot - 1; //Set insert spot to index before larger item.
Array.Copy(arra y, newArray, spot);
newArray[spot] = value;
Array.Copy(arra y, spot,newArray, spot+1,array.Le ngth - spot);
array = newArray;
}
--
Marcus Andrén
I appreciate the input, just to clarify the intent was to practice my own
binary search algorithm.
"Marcus Andrén" <a@b.c> wrote in message
news:3k******** *************** *********@4ax.c om... Here is a quite simple version. And a few comments:
* Array class contains a static binary search method. * No need to special case first, last item. Just Array.Copy zero items * Unless null array is needed for some reason it is easier to just make the private array zero length at initalization. That way there is no need to employ null checks in all methods manipulating it.
private int[] array = new int[0];
public void Insert(int value) { int[] newArray = new int[array.Length+1];
//Array is sorted so we can use binary search to find insert spot int spot = Array.BinarySea rch(array, value); //If value is not found, spot is set to the negative of the next //higher value's index. if (spot < 0) spot = -spot - 1; //Set insert spot to index before larger item.
Array.Copy(arra y, newArray, spot); newArray[spot] = value; Array.Copy(arra y, spot,newArray, spot+1,array.Le ngth - spot); array = newArray; }
-- Marcus Andrén
Ryan Graham wrote: I totally bombed this question in an interview so I'm posting my answer here for comments and suggestions... perhaps (god help me) I'm just not that bright, but this works and seems to be fairly efficent. The idea was simple, insert an integer into a list that has already been sorted.
I think the best answer to the question is, "If this is an often-done
operation, you are using arrays for something you should use a sorted
tree's for".
--
Helge Jensen
mailto:he****** ****@slog.dk
sip:he********* *@slog.dk
-=> Sebastian cover-music: http://ungdomshus.nu <=-
In article <kc************ *****@newsread3 .news.pas.earth link.net>,
Ryan Graham <ry****@earthli nk.net> wrote:
: I totally bombed this question in an interview so I'm posting my
: answer here for comments and suggestions... perhaps (god help me) I'm
: just not that bright, but this works and seems to be fairly efficent.
: The idea was simple, insert an integer into a list that has already
: been sorted.
Did the question require logarithmic complexity? In pressure
situations, avoid cleverness! Assuming there was no complexity
requirement, you might have said something like, "Well, I'll start
with a linear search and then optimize later using binary search."
You may have even said, "Well, I'll start with the dead-simple approach
of copying to a one-longer array, adding the value to be inserted, and
the sorting the result." Then you could talk about the piggish
complexity, which you could improve by going to linear or binary
search, and also the inefficient allocation strategy, which you could
mitigate by doubling the capacity -- distinct from the length -- when
you run out of room.
Showing that you are aware of clever solutions but move first to a
correct result and then refine for performance sends a very good signal
in a job interview.
Below is an implementation, complete with unit tests.
Enjoy,
Greg
// SortedList.cs
using System;
using System.Collecti ons;
namespace MyCollections
{
public class SortedIntList
{
private int[] a = new int[0];
public void Insert(int value)
{
int i = InsertionPointL ogarithmic(valu e);
int[] anext = new int[a.Length + 1];
Array.Copy(a, 0, anext, 0, i);
anext[i] = value;
Array.Copy(a, i, anext, i + 1, a.Length - i);
a = anext;
}
private int InsertionPointL ogarithmic(int value)
{
int l = 0;
int r = a.Length - 1;
while (l <= r)
{
int m = (l + r) / 2;
if (value < a[m])
r = m - 1;
else
l = m + 1;
}
return l;
}
private int InsertionPointL inear(int value)
{
int i;
for (i = 0; i < a.Length; i++)
if (a[i] > value)
break;
return i;
}
public int this[int i]
{
get { return a[i]; }
}
public int Count
{
get { return a.Length; }
}
}
}
// InsertTest.cs
using System;
using MyCollections;
using NUnit.Framework ;
namespace SortedListTests
{
[TestFixture]
public class InsertTest
{
SortedIntList list = new SortedIntList() ;
[SetUp]
public void CreateList()
{
list = new SortedIntList() ;
}
[Test]
public void StartEmpty()
{
AssertCountEqua ls(0);
}
[Test]
public void IntoEmptyList()
{
list.Insert(3);
AssertCountEqua ls(1);
Assert.AreEqual (3, list[0], "bogus value");
}
[Test]
public void InsertIncreasin g()
{
int[] seq = new int[] { 1, 2 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}
[Test]
public void InsertDecreasin g()
{
int[] seq = new int[] { 20, 10 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}
[Test]
public void InsertManyAssor ted()
{
int[] seq = new int[] { 70, 10, 30, 40, 20, 50 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}
[Test]
public void InsertWithDupli cates()
{
int[] seq = new int[] { 30, 20, 10, 10, 50, 10, 50, 20 };
InsertSequence( seq);
AssertCorrectRe sult(seq);
}
private void InsertSequence( int[] values)
{
foreach (int value in values)
list.Insert(val ue);
}
private void AssertCorrectRe sult(int[] input)
{
AssertCountEqua ls(input.Length );
Array.Sort(inpu t);
for (int i = 0; i < input.Length; i++)
Assert.AreEqual (input[i], list[i], "bad value at index " + i);
}
private void AssertCountEqua ls(int expected)
{
Assert.AreEqual (expected, list.Count, "bad Count");
}
}
}
--
Freedom means that when you wake up in the morning, your life, liberty and
property are yours to do with them what you will. Of course, that means that
no one else's life, liberty, or property is yours. That's freedom. It's real
simple. -- James Ostrowski
Thank you! This is exactly the kind of response I was looking for. :)
"Greg Bacon" <gb****@hiwaay. net> wrote in message
news:11******** *****@corp.supe rnews.com... In article <kc************ *****@newsread3 .news.pas.earth link.net>, Ryan Graham <ry****@earthli nk.net> wrote:
: I totally bombed this question in an interview so I'm posting my : answer here for comments and suggestions... perhaps (god help me) I'm : just not that bright, but this works and seems to be fairly efficent. : The idea was simple, insert an integer into a list that has already : been sorted.
Did the question require logarithmic complexity? In pressure situations, avoid cleverness! Assuming there was no complexity requirement, you might have said something like, "Well, I'll start with a linear search and then optimize later using binary search."
You may have even said, "Well, I'll start with the dead-simple approach of copying to a one-longer array, adding the value to be inserted, and the sorting the result." Then you could talk about the piggish complexity, which you could improve by going to linear or binary search, and also the inefficient allocation strategy, which you could mitigate by doubling the capacity -- distinct from the length -- when you run out of room.
Showing that you are aware of clever solutions but move first to a correct result and then refine for performance sends a very good signal in a job interview.
Below is an implementation, complete with unit tests.
Enjoy, Greg
// SortedList.cs using System; using System.Collecti ons;
namespace MyCollections { public class SortedIntList { private int[] a = new int[0];
public void Insert(int value) { int i = InsertionPointL ogarithmic(valu e);
int[] anext = new int[a.Length + 1];
Array.Copy(a, 0, anext, 0, i); anext[i] = value; Array.Copy(a, i, anext, i + 1, a.Length - i);
a = anext; }
private int InsertionPointL ogarithmic(int value) { int l = 0; int r = a.Length - 1;
while (l <= r) { int m = (l + r) / 2;
if (value < a[m]) r = m - 1; else l = m + 1; }
return l; }
private int InsertionPointL inear(int value) { int i; for (i = 0; i < a.Length; i++) if (a[i] > value) break;
return i; }
public int this[int i] { get { return a[i]; } }
public int Count { get { return a.Length; } } } }
// InsertTest.cs using System;
using MyCollections;
using NUnit.Framework ;
namespace SortedListTests { [TestFixture] public class InsertTest { SortedIntList list = new SortedIntList() ;
[SetUp] public void CreateList() { list = new SortedIntList() ; }
[Test] public void StartEmpty() { AssertCountEqua ls(0); }
[Test] public void IntoEmptyList() { list.Insert(3);
AssertCountEqua ls(1); Assert.AreEqual (3, list[0], "bogus value"); }
[Test] public void InsertIncreasin g() { int[] seq = new int[] { 1, 2 }; InsertSequence( seq); AssertCorrectRe sult(seq); }
[Test] public void InsertDecreasin g() { int[] seq = new int[] { 20, 10 }; InsertSequence( seq); AssertCorrectRe sult(seq); }
[Test] public void InsertManyAssor ted() { int[] seq = new int[] { 70, 10, 30, 40, 20, 50 }; InsertSequence( seq); AssertCorrectRe sult(seq); }
[Test] public void InsertWithDupli cates() { int[] seq = new int[] { 30, 20, 10, 10, 50, 10, 50, 20 }; InsertSequence( seq); AssertCorrectRe sult(seq); }
private void InsertSequence( int[] values) { foreach (int value in values) list.Insert(val ue); }
private void AssertCorrectRe sult(int[] input) { AssertCountEqua ls(input.Length );
Array.Sort(inpu t);
for (int i = 0; i < input.Length; i++) Assert.AreEqual (input[i], list[i], "bad value at index " + i); }
private void AssertCountEqua ls(int expected) { Assert.AreEqual (expected, list.Count, "bad Count"); } } } -- Freedom means that when you wake up in the morning, your life, liberty and property are yours to do with them what you will. Of course, that means that no one else's life, liberty, or property is yours. That's freedom. It's real simple. -- James Ostrowski
After reviewing suggestions from this list and others I came up with the
following last night... further comments and suggestions greatly
appreciated.
I've added the test method down at the bottom for reference.
new method (in milliseconds)
0 10,000 calls to List.Insert()
0 15,000 calls to List.Insert()
0 20,000 calls to List.Insert()
15.625 50,000 calls to List.Insert()
15.625 75,000 calls to List.Insert()
15.625 100,000 calls to List.Insert()
old method (in milliseconds)
203.125 10,000 calls to List.Insert()
265.625 15,000 calls to List.Insert()
1062.5 25,000 calls to List.Insert()
6687.5 50,000 calls to List.Insert()
18296.875 75,000 calls to List.Insert()
35468.75 100,000 calls to List.Insert()
class List
{
private const int INITIAL_BUFFER_ SIZE = 10;
private int[] _list;
private int _length = 0;
public List()
{
this._list = new int[INITIAL_BUFFER_ SIZE];
}
public void Insert(int value)
{
this.Insert(val ue, BinarySearch(va lue));
if ( this._length == this._list.Leng th )
this.IncrementA rraySize();
}
private void Insert(int value, int index)
{
for(int i = this._length; i > index; --i)
this._list[i] = this._list[i-1];
this._list[index] = value;
this._length++;
}
private int BinarySearch(in t value)
{
int left = 0;
int right = this._length -1;
int middle = 0;
while (left <= right)
{
middle = (left + right) / 2;
if (value < this._list[middle])
{ right = middle -1; }
else if (value > this._list[middle])
{ left = middle +1; }
else if (value == this._list[middle])
{ break; }
}
return left;
}
private void IncrementArrayS ize()
{
int[] tempArray = new int[this._list.Leng th *2];
Array.Copy(this ._list, tempArray, this._list.Leng th);
this._list = tempArray;
}
}
// Test Method
static void Main(string[] args)
{
int testIterations = 100000;
List list = new List();
DateTime startTime = DateTime.Now;
for (int i=0; i<testIteration s; i++)
list.Insert(i);
DateTime endTime = DateTime.Now;
TimeSpan timeSpan = endTime - startTime;
Debug.WriteLine (timeSpan.Total Milliseconds);
}
"Peter Rilling" <pe***@nospam.r illing.net> wrote in message
news:%2******** ********@TK2MSF TNGP10.phx.gbl. .. I have not read the code too closely, but here is what I see that could improve performance slightly (depending on how the Array.Copy is implemented) .
Toward the end, you have two copy statements which copy each half of the array leaving a gap for the new number.
One suggestion (and forgive me if I am too obsessive compulsive) is that rather then two, it might be more efficient to make just one call to Array.Copy to an array that is one bigger. Doing this will leave the last element undefined. Then insert your value as the last element, then swap the last element with the pivot value. If Array.Copy was efficient, it would do a memory copy rather then enumerating the values (like I said, I don't really know the implementation) .
Don't know if it would do anything but just a thought.
"Ryan Graham" <ry****@earthli nk.net> wrote in message news:kc******** *********@newsr ead3.news.pas.e arthlink.net...I totally bombed this question in an interview so I'm posting my answer here for comments and suggestions... perhaps (god help me) I'm just not that bright, but this works and seems to be fairly efficent. The idea was simple, insert an integer into a list that has already been sorted.
private int[] _list; ... public void Insert(int value) { int[] tempArray;
// check for special cases if (this._list == null) { // first item added create new array
this._list = new int[1]; this._list[0] = value; return; } else if (this._list[this._list.Leng th-1] <= value) { // item to be added is greater than the last // item in the array, append item to end
tempArray = new int[this._list.Leng th+1]; Array.Copy(this ._list, tempArray, this._list.Leng th); this._list = tempArray; this._list[this._list.Leng th-1] = value;
return; } else if (this._list[0] >= value) { // item to be added is less than the first // item in the array, insert item to the beginning
tempArray = new int[this._list.Leng th+1]; Array.Copy(this ._list, 0, tempArray, 1, this._list.Leng th); this._list = tempArray; this._list[0] = value;
return; }
int left = 0; int right = this._list.Leng th; int middle = 0; int mod = 0;
// binary search loop while (left <= right) { // modify the pivot point middle = (left + right) / 2;
if (value > this._list[middle]) { // item is greater than the pivot point
//Debug.WriteLine (value + " > " + this._list[middle]); mod = 1; left = middle + 1; } else if (value < this._list[middle]) { // item is less than the pivot point
//Debug.WriteLine (value + " < " + this._list[middle]);
mod = 0; right = middle - 1; } else { // item is equal to the pivot point
//Debug.WriteLine (value + " = " + this._list[middle]); break; } }
// modify the pivot point again middle += mod;
// rebuild array to allow space for new item tempArray = new int[this._list.Leng th+1]; Array.Copy(this ._list, 0, tempArray, 0, middle); Array.Copy(this ._list, middle, tempArray, middle+1, tempArray.Lengt h - (middle +1));
// insert new item this._list = tempArray; this._list[middle] = value; }
In article <ta************ **@newsread3.ne ws.pas.earthlin k.net>,
Ryan Graham <ry****@earthli nk.net> wrote:
: Thank you! This is exactly the kind of response I was looking for. :)
You're welcome. I'm glad to help.
Greg
--
Certainly, an infant under a year is too young to be stimulated by
seeing his mother undressed (unless he's a breastfeeder) . . .
-- "What To Expect The First Year" on parental nudity
In article <af************ *@newsread3.new s.pas.earthlink .net>,
Ryan Graham <ry****@earthli nk.net> wrote:
: After reviewing suggestions from this list and others I came up with
: the following last night... further comments and suggestions greatly
: appreciated.
:
: I've added the test method down at the bottom for reference.
If you anticipate the lists getting large, the allocation strategy
is inefficient. When you run out of room, you should double the
length of the array instead of going back for just one more. That
does mean, however, that you'll have to track length and capacity
separately.
Greg
--
The maxim of buying nothing without the money in our pockets to pay for
it would make of our country one of the happiest on earth.
-- Thomas Jefferson This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Jonathan Moss |
last post by:
I have (almost) succesfully created a linked list data structure class. It
will quite happily add items to to the end of the list (once I found that
objects are not passed by reference :). What I am having problems with is
inserting an item into the middle of the list.
The code below is the addAfter function. As It's name suggests it is
supposed to add a new list item after the one specified by $prev with what
ever was after $prev now...
|
by: Thomas Guettler |
last post by:
Hi,
Simple excerise:
You have a sorted list of integers:
l=
and you should fill all gaps:
result ==
|
by: custard_pie |
last post by:
I need help sorting a list...I just can't figure out how to sort a list
and then return a list with the index of the sorted items in the list
for example if the list I want to sort is
I need to be returned
Can someone help please....
|
by: Kieran Simkin |
last post by:
Hi all,
I'm having some trouble with a linked list function and was wondering if
anyone could shed any light on it. Basically I have a singly-linked list
which stores pid numbers of a process's children - when a child is fork()ed
its pid is added to the linked list. I then have a SIGCHLD handler which is
supposed to remove the pid from the list when a child exits. The problem I'm
having is that very very occasionally and seemingly...
|
by: Steve Teeples |
last post by:
I have a sorted listbox. When just one item is in the collection the item
will not appear in my displayed list. If I remove the sort option then the
item is displayed correctly. If I have multiple items in the collection then
sorted works as expected. I have the latest service pack installed for .NET
Frameworks 1.1. I am using Windows XP SP2. Do you have any idea why this
would happen?
--
Steve
| |
by: Simon Jefferies |
last post by:
Hello,
I am trying to add an item to a checked list box, like:
clbList.Items.add("Hello",true)
I get an error back:
Run-time exception thrown: System.ArgumentOutOfRangeException - Specified
argument was out of the range of valid values. Parameter name: '-1' is not a
|
by: Miguel E. |
last post by:
Hi,
I've been (self) studying Python for the past two months and I have had
no background in OOP whatsoever.
I was able to write an interactive program that randomly selects an item
from a list. From a Main Menu, the user has the option to add items to
an empty list, show the list, run the random selector, and of course
quit the program. The program also complains if a user tries to add an
item that is already in the list prompting...
|
by: David Isaac |
last post by:
Is it expected for access to set elements to be much
slower than access to list elements? Explanation?
Thanks,
Alan Isaac
9.806250235714316
3.9823075279120701
|
by: Marcus Kwok |
last post by:
I am not sure if this is something that is covered by the Standard, or
if it's an implementation detail of my Standard Library.
I am reading in a large amount of data into a std::set. There is an
overload for std::set::insert() that takes in an iterator as a hint as
to where the new value should be inserted, and my implementation
(Dinkumware) says that if the hint is good (meaning the iterator points
immediately before or after where...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
|
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 Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
| |
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 protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
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, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
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 presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
| |
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |