|
Well a lot depending on how consistant is the format of the site. You can use the source and find some constant word as an anchor and grab the text off the source.
Alternatively, what I had done previously was (on VB6) run a web control in the application, point it to the target URL, send a ctrl-A key and paste it on a text box / rich text box, then grab the data from the text box.
|
|
|
|
|
thanks i will take a look into it
|
|
|
|
|
I have a base-class B where I put all my slowly changing, somewhat generic stuff. On top of that I intend to have a class C : B; in words, C inherits from B.
What's the best way to build the interface(s)? I can imagine IB, so B : IB. How do I structure an interface for C? Do I build one global interface for (C : B)? or perhaps C : IC, B (but I don't really know that means, well, I could guess).
Please advise.
(Also, I suppose I could use composition, but I'm not yet fluent with that design pattern).
Thx.
|
|
|
|
|
That depends on how you want to use it. Are the functionalities of B and c good seperated? Do you always when you work on C also need the base functionality from B?
If both contents are totally seperated I would use the following:
B : IB; C: IC, B
If not:
B : IB; IBC : IB, IC; C : IBC
But again: It greatly depends on what your are actually trying to do and how the classes are logically bound together.
|
|
|
|
|
You could try reading the article Why Extends is Evil[^] by Allen Holub. It discusses a situation similar to yours. The article deals specifically with Java, but pertains to all object-oriented languages with single inheritance and multiple "interface" implementations.
In short, Holub's answer would consist of the following:
Create an interface IB .
Create a class B implementing interface IB .
Create an interface IC .
Create a class C implementing interfaces IB and IC .
Create a private member of C of type B and, in all the functions from IB , pass those requests through to B .
As an alternative, you could modify the third and fourth items in the above list to read like this:
Create an interface IC inheriting from IB .
Create a class C implementing interface IC .
I hope that helps.
|
|
|
|
|
In case I, do I ever inherit B to C (C : B), or does the private member B of C act as a proxy to inheritance?
In case II, C has to implement IB and IC, but my purpose is to code the implementation of IB in B.
Please advise.
Thx.
|
|
|
|
|
In case I, you do not have C : B . Instead, you use composition and the unity of the interfaces, the proxy to inheritance, as you say.
In case II, you still use composition. But, instead of having C : IB, IC as in case I, you have C : IC and IC : IB . But, you still implement B : IB and use it the same way as you would in case I.
Mind you, sometimes this is overkill. There are times that you can have many implementations of IB and IC or times where coupling does not matter too much because of the specialized code in B and C . In those cases, you may wish to have B : IB and C : B, IC . Just remember that, in other parts of your application/framework, that you always want to reference IB and IC rather than implementations of those interfaces.
To quote Allen Holub:Design, by nature, is a series of trade-offs. Every choice has a good and bad side, and you make your choice in the context of overall criteria defined by necessity. Good and bad are not absolutes, however. A good decision in one context might be bad in another.
"we must lose precision to make significant statements about complex systems."
-deKorvin on uncertainty
|
|
|
|
|
I've now implemented all this. I chose the favored option:
IB {}
IC {}
B : IB
{}
C : IC
{
B _b = new B();
}
This is working well and is clear enough for what I'm doing.
thanks for your help.
|
|
|
|
|
Hi,
I created app to send form data to Word. Its working properly. But now I want send that data anywhere in the document. For example begining, end and center. Here Im not talking about align text. Acctually I want send those data to certain palces. Please Help me
the problemKreator
|
|
|
|
|
How do I set the Zoom Factor for a CrystalReportViewer to a new zoom level (i.e., 35% or 80%)? I have tried the following code, but the CrystalReportViewer still opens 100%. Any ideas?
// This is just a short example - my code will pull the value from a config setting
int zoomFactor = 50;
this.crystalReportViewer1.Zoom(zoomFactor) ;
Code Toad
"Take one line of code at a time"
|
|
|
|
|
I found it! I was able to set the new zoom factor for the Cyrstal Report by calling a method to force the new zoom factor on page load.
|
|
|
|
|
What C# code is used to determine the workgroup name for the local pc and remote pc's in a windows app. Thanks.
|
|
|
|
|
You need to P/Invoke the NetGetJoinInformation[^] function.
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
Please do not send questions by email. Post them to the forum, so that other users can see them, and have a chance to answer them.
hops33n wrote: Thanks for the info, but Im just starting out and still need some help. If you get a chance here is the code I have started off with so far. I copied and pasted the invoke, but its erroring out about dllimport could not be found. What I am doing is starting off making an ip/port scanner. I thought this would be a good project to get me use to programming. If you dont mind I would appreciate any help in the future you can offer if thats ok. Thanks a bunch.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Scanner
{
public class Form1 : System.Windows.Forms.Form
{
...
[DllImport("Netapi32.dll")]
static extern int NetApiBufferFree(IntPtr Buffer);
public static string GetJoinedDomain()
{
int result = 0;
string domain = null;
IntPtr pDomain = IntPtr.Zero;
NetJoinStatus status = NetJoinStatus.NetSetupUnknownStatus;
try
{
result = NetGetJoinInformation(null, out pDomain, out status);
if (result == ErrorSuccess && status == NetJoinStatus.NetSetupDomainName)
{
domain = Marshal.PtrToStringUni(pDomain);
}
}
finally
{
if (pDomain != IntPtr.Zero) NetApiBufferFree(pDomain);
}
if (domain == null) domain = "";
return domain;
}
...
You need to copy the code from the C# Signature and User-Defined Types sections of the pinvoke.net page[^] as well as the sample code.
You also need to change the GetJoinedDomain function to return the domain when the status returns NetSetupWorkgroupName , since the current code only works with domains.
You will probably also want to add a computer name parameter to the function, so that you can get the information back from other computers.
const int ErrorSuccess = 0;
public enum NetJoinStatus
{
NetSetupUnknownStatus = 0,
NetSetupUnjoined,
NetSetupWorkgroupName,
NetSetupDomainName
}
[DllImport("Netapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
static extern int NetGetJoinInformation(
[In,MarshalAs(UnmanagedType.LPWStr)] string server,
out IntPtr domain,
out NetJoinStatus status);
[DllImport("Netapi32.dll")]
static extern int NetApiBufferFree(IntPtr Buffer);
public static string GetJoinedDomain(string computerName)
{
if (null != computerName && 0 == computerName.Length)
computerName = null;
int result = 0;
string domain = null;
IntPtr pDomain = IntPtr.Zero;
NetJoinStatus status = NetJoinStatus.NetSetupUnknownStatus;
try
{
result = NetGetJoinInformation(computerName, out pDomain, out status);
if (ErrorSuccess == result)
{
switch (status)
{
case NetJoinStatus.NetSetupDomainName:
case NetJoinStatus.NetSetupWorkgroupName:
domain = Marshal.PtrToStringUni(pDomain);
break;
}
}
}
finally
{
if (pDomain != IntPtr.Zero) NetApiBufferFree(pDomain);
}
if (domain == null) domain = "";
return domain;
}
public static string GetJoinedDomain()
{
return GetJoinedDomain(null);
}
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
I have a problem with accessing multidimensional arraylists. I have an multidimensional Arraylist with a dimension of (1,3), and the column value can change dynamically.
Col0 Col1 Col2
Row0 ArrayList1 ArrayList2 ArrayList3
Lets call this overal multidimensional array ArrList_Main.
Now each of this individual arraylists (1,2 or 3) can have upto 25000 elements(2 string and one integer in this case) and they will be of the same length.
I need to iterate through a loop extracting one element in each of the child arraylists.
For example I can use, (Pseudo code)...
ArrList_Main[0,0].GetRange(0,1)[0]
ArrList_Main[0,1].GetRange(0,1)[0]
ArrList_Main[0,2].GetRange(0,1)[0]
which gives me ArrayList1, ArrayList2, ArrayList3 respectively. Ofcourse i can then use this line,
ArrayList1[n].ToString() to get to the individual element.
The problem out of the possible 25000 elements in each Child ArrayList, I only need one element at a time and the loop is sequential and starts from the lowest index.
So for example if the loop runs 25000 times and each arraylist in 25000 elements long, i will extracting all 25000 every time the loop runs when all i need is one particular element inside the arraylist. (So for 3 elements I am extracting 3 * 25000 = 25000 elements for each iteration). Is there any way of accessing the individual element?.
Here is one way i can get to that element directly when i try this code (ArrList_Main[0,0][0][0]) in the watch window. (ofcourse it gives me this error when i use it in the code - " Cannot apply indexing with [] to an expression of type object")
Here is the sample code. Just copy it into the main method of a C# console application.
ArrayList [,] dataSrc = new ArrayList[1,3];
ArrayList Name1 = new ArrayList();
ArrayList Ph1 = new ArrayList();
ArrayList Email = new ArrayList();
Name1.Add("A");
Name1.Add("B");
Name1.Add("C");
Ph1.Add(1);
Ph1.Add(2);
Ph1.Add(3);
Email.Add("a@com");
Email.Add("b@com");
Email.Add("c@com");
for (int i = 0; i < dataSrc.GetLength(1); i++)
for (int j = 0; j < dataSrc.GetLength(0); j++)
dataSrc[j,i] = new ArrayList();
dataSrc[0,0].Add(Name1);
dataSrc[0,1].Add(Ph1);
dataSrc[0,2].Add(Email);
ArrayList a1 = (ArrayList)dataSrc[0,0].GetRange(0,1)[0];
ArrayList a2 = (ArrayList)dataSrc[0,1].GetRange(0,1)[0];
ArrayList a3 = (ArrayList)dataSrc[0,2].GetRange(0,1)[0];
string str1 = a1[0].ToString();
Console.WriteLine(str1);
// I need to access each individual element inside each cell.
Help Please...
Kalyan
-- modified at 12:02 Monday 20th March, 2006
|
|
|
|
|
Well ArrayList has objects in it so you probably have to cast to ArrayList before doing [0] again:
(ArrList_Main[0,0][0] as ArrayList)[0]
|
|
|
|
|
Steve,
Thank you so much. That worked like a charm.
Thanks Kalyan
|
|
|
|
|
I am writing an file broswer and can't seem to get the copy method of the file class to work. The file is copyed to the specified directory but the file contents are gone! I've created a new file at the destination, then used the File.Copy method, putting in the pathnames of the file to copy and the destination file i created earlier. Any ideas?
Thanks in advance!
|
|
|
|
|
hi
i have a screen with customer details on it. for some items i only want to make a combobox available. eg. country - this will hold a defined list of countries. my question is how i set up the datasource etc. on this combo. of course, when opening the screen, i want the existing value for this customer to be shown, eg. UK. but the actual source values of the combo should come from another table - eg. the countries table.
i'm a little confused on how to set this up, any help appreciated.
rgds,
barry
|
|
|
|
|
Hi!
Are you saving the complete name of the country or its code in the customer detail?
Or
what columns the country table contains?
|
|
|
|
|
please i need the answer for this problem using c#.
i believe it is a very famous one but i can not get the code.
the problem is down here
Problem:
Christmas is near, and Goostavo is preparing to buy Chriastmas presents!
He has one problem though, and you will have to help him with that.
Goostavo still doesn't know for how many people is he going to buy
presents. He also doesn't know his budget, and how big bag he is going to
carry for the presents. Actually, Goostavo doesn't know anything at all,
right now.
When Goostavo finds out all of those three things, he will have to go and
buy the presents. He must buy equal amount of presents for each person,
otherwise someone may get offended! He also wants to spend as much
money from the bugest, as possible!
You will have to write a function, that will calculate the maximum amount
of money he is going to spend from his budget.
Here is what you will be given:
1) The amount of money Goostavo has for spending.
2) The volume of the bag, in which he will carry the presents.
3) The number of people he has to buy presents for.
4) The number of presents in the store.
5) Volume and price for each present.
The function will look like that:
public static float Contest7(float budget, float bagVolume, int people, int
Npresents, float [] presentVolume, float [] presentPrice);
Example input:
budget = 183.23
bagVolume = 64.11
people = 7
Npresents = 12
presentVolume[0] = 4.53
presentPrice[0] = 12.23
presentVolume[1] = 9.11
presentPrice[1] = 45.03
presentVolume[2] = 4.53
presentPrice[2] = 12.23
presentVolume[3] = 6.00
presentPrice[3] = 32.93
presentVolume[4] = 1.04
presentPrice[4] = 6.99
presentVolume[5] = 0.87
presentPrice[5] = 0.46
presentVolume[6] = 2.57
presentPrice[6] = 7.34
presentVolume[7] = 19.45
presentPrice[7] = 65.98
presentVolume[8] = 65.59
presentPrice[8] = 152.13
presentVolume[9] = 14.14
presentPrice[9] = 7.23
presentVolume[10] = 16.66
presentPrice[10] = 10.00
presentVolume[11] = 13.53
presentPrice[11] = 25.25
Note
1) There can be two or more presents with equal price and volume!
2) The amount of presents in the store will always be greater to the
amount of people Goostavo has to buy presents for.
3) Remember: Goostavo can buy more than one present for each person,
but the amount of presents he gives to each person must be equal! i.e.
everyone gets 1 present, or everyone gets 2 presents, and so on...
4) Remember: Goostavo need to spend AS MUCH money as possible, but
not go over the budget!
M
|
|
|
|
|
Lol, I especially like the method name
|
|
|
|
|
and I thought the "do my homework" posts were the hieght of patheticness.
|
|
|
|
|
Goostavo needs to do his own homework...
|
|
|
|
|
Thats actually quite a good homework question, not too easy and not a million miles away from real-world kind of requirements for a quick algo.
WHen you run into difficulties, post your code and im sure someone here would be happy to help out.
|
|
|
|
|