|
..and just like with Warcraft, there are limits to what you can and are allowed to do. Their website has it's own forum, I suggest you post your question there. And don't be surprised if it's labeled "cheating"
|
|
|
|
|
Eddy Vluggen wrote: don't be surprised if it's labeled "cheating"
In some cases, my signature will be longer then my message...
<em style="color:red"> <b>ProgramFOX</b></em> ProgramFOX
|
|
|
|
|
i have latitudes and longitudes i want to calculate distance between those latlongs and also how to retrieve existed latlongs from database like sql in c#
|
|
|
|
|
This is not a good question - we cannot work out from that little what you are trying to do.
Remember that we can't see your screen, access your HDD, or read your mind.
Edit your question and provide better information.
If you get an email telling you that you can catch Swine Flu from tinned pork then just delete it. It's Spam.
|
|
|
|
|
Well, if your database doesn't support geo types, you could always store them as floats. To get the difference, use the Haversine[^] formula.
|
|
|
|
|
How about some codez:
public double HaversineDistance(Location location) {
double R = 6371;
double dLat = (location.Latitude - Latitude).ToRadians();
double dLon = (location.Longitude - Longitude).ToRadians();
double a = Math.Pow(Math.Sin(dLat / 2), 2) +
Math.Cos(Latitude.ToRadians()) * Math.Cos(location.Latitude.ToRadians()) *
Math.Pow(Math.Sin(dLon / 2), 2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
double d = R * c;
return d;
}
|
|
|
|
|
naveen 2012 wrote: calculate distance between those latlongs
"Great circle" distance? Or "rectilinear" distance? Or "digging a hole to China" distance?
P.S. I forgot about the "Dalek Dave Pub Crawl Distance".
|
|
|
|
|
<div class="bo9 space">
<table border="0" cellspacing="0" cellpadding="0" class="bot">
<thead>
<tr>
<th class="bor f2" colspan="13"><h2>Mở thưởng chủ nhật ngày 30/12/2012</h2>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="span-2 bol f1b db"><h3>Đặc Biệt</h3></td>
<td class="bor f2 db" colspan="12">21505</td>
</tr>
<tr>
<td class="span-2 bol f1b"><h3>Giải Nhất</h3></td>
<td class="bor f2" colspan="12">00305</td>
</tr>
<tr>
<td class="span-2 bol f1b"><h3>Giải Nhì</h3></td>
<td class="bol f2" colspan="6">16086</td>
<td class="bor f2" colspan="6">54638</td>
</tr>
<tr>
<td class="span-2 bol f1b" rowspan="2"><h3>Giải Ba</h3></td>
<td class="bol f2" colspan="4">85671</td>
<td class="bol f2" colspan="4">74937</td>
<td class="bor f2" colspan="4">60046</td></tr>
<tr><td class="bol f2" colspan="4">48910</td>
<td class="bol f2" colspan="4">28668</td>
<td class="bor f2" colspan="4">73173</td>
</tr>
<tr>
<td class="span-2 bol f1b"><h3>Giải Tư</h3></td>
<td class="bol f2" colspan="3">2979</td>
<td class="bol f2" colspan="3">1875</td>
<td class="bol f2" colspan="3">9307</td>
<td class="bor f2" colspan="3">1100</td>
</tr>
<tr>
<td class="span-2 bol f1b" rowspan="2"><h3>Giải Năm</h3></td>
<td class="bol f2" colspan="4">7891</td>
<td class="bol f2" colspan="4">4924</td>
<td class="bor f2" colspan="4">2383</td></tr>
<tr><td class="bol f2" colspan="4">6579</td>
<td class="bol f2" colspan="4">7116</td>
<td class="bor f2" colspan="4">1362</td>
</tr>
<tr>
<td class="span-2 bol f1b"><h3>Giải Sáu</h3></td>
<td class="bol f2" colspan="4">376</td>
<td class="bol f2" colspan="4">929</td>
<td class="bor f2" colspan="4">292</td>
</tr>
<tr>
<td class="span-2 bol f1b"><h3>Giải Bảy</h3></td>
<td class="bol f2" colspan="3">48</td>
<td class="bol f2" colspan="3">15</td>
<td class="bol f2" colspan="3">65</td>
<td class="bor f2" colspan="3">62</td>
</tr>
<tr>
<th class="bor f1" colspan="13">Nhận KQXS Thủ Đô : Soạn KXTD gửi 8185</th>
</tr>
</tbody>
</table>
</div>
How to extract tab table in this html code use regular expressions?
Thank!
|
|
|
|
|
|
Short.
Sweet.
Accurate.
If you get an email telling you that you can catch Swine Flu from tinned pork then just delete it. It's Spam.
|
|
|
|
|
PIEBALDconsult wrote: Use an XmlDocument.
Or the HTML Agility Pack[^]!
Bob Dole The internet is a great way to get on the net.
2.0.82.7292 SP6a
|
|
|
|
|
I suppose, but I prefer to limit reliance on third-party products.
|
|
|
|
|
I have the following function which I got online, and have changed to suit my needs :-
private Boolean SheetExists(string strFilename)
{
Boolean Match = false;
OleDbConnection objConn = null;
System.Data.DataTable dt = null;
try
{
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + strFilename + ";Extended Properties=Excel 8.0;";
objConn = new OleDbConnection(connString);
objConn.Open();
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
String[] excelSheets = new String[dt.Rows.Count];
int i = 0;
foreach (DataRow row in dt.Rows)
{
excelSheets[i] = row["TABLE_NAME"].ToString();
i++;
}
for (int j = 0; j < excelSheets.Length; j++)
{
if (excelSheets[j] == "Sheet1$")
{
Match = true;
}
}
if (Match == true)
return true;
else
return false;
}
finally
{
if (objConn != null)
{
objConn.Close();
objConn.Dispose();
}
if (dt != null)
{
dt.Dispose();
}
}
}
Basically it checks if sheet1 exists in a workbook. I'm currently using the variable "Match" to obtain a "return true" or a "return false". I'm sure it possible to modify the code so that it returns the true/false directly, I just can't figure out how.
Any ideas? Thanks
|
|
|
|
|
Modify your test so it breaks out of the loop as soon as a match is found
for (int j = 0; j < excelSheets.Length; j++)
{
if (excelSheets[j] == "Sheet1$")
{
Match = true;
break;
}
}
//delete the following lines after the loop
if (Match == true)
return true;
else
return false;
// add this line after the finally block
return Match;
[edit]
You could actually check the names in your foreach block to make it more efficient.
[/edit]
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Brilliant - now that I see it, it makes perfect sense. Taking some time to get used to C# from VBA
Thank you for your help
|
|
|
|
|
My pleasure; good luck with the rest of the project.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Just saw your edit about checking the names. Good idea. I changed the code to
int i = 0;
foreach (DataRow row in dt.Rows)
{
excelSheets[i] = row["TABLE_NAME"].ToString();
if (excelSheets[i] == "Sheet1$")
{
Match = true;
break;
}
i++;
}
Thanks again!
|
|
|
|
|
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Why not really simplify it?
private Boolean SheetExists(string strFilename)
{
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + strFilename + ";Extended Properties=Excel 8.0;";
using (OleDbConnection objConn = new OleDbConnection(connString))
{
objConn.Open();
using (System.Data.DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null))
{
foreach (DataRow row in dt.Rows)
{
if (row["TABLE_NAME"].ToString() == "Sheet1$")
{
return true;
}
}
return false;
}
}
}
|
|
|
|
|
Good question, and great answer. I'll give this a try when I get to work. Thank you!
|
|
|
|
|
How could I modify this code so I could check for 2 sheet names, for example, Sheet1 and Sheet2?
Thanks.
|
|
|
|
|
Just change the conditional in the loop.
From:
if (row["TABLE_NAME"].ToString() == "Sheet1$")
{
return true;
}
To:
string tableName = row["TABLE_NAME"].ToString();
if (tableName == "Sheet1$" ||
tableName == "Sheet2$")
{
return true;
}
If, instead, you have an array or List<string> containing multiple sheet names (for example, called SheetNames ), you could do it like:
if (SheetNames.Contains(row["TABLE_NAME"].ToString()))
{
return true;
}
Unless he list of sheet names is used in several places in the code, the direct comparisons in the tableName == ... case is probably the way to go.
|
|
|
|
|
That's great, thanks. Maybe you could help with a similar issue, as I'm really not sure on the best way to approach this...
I have this :-
switch (SuppCode)
{
case "COR1":
Sheet1Name = "Sheet1";
Sheet2Name = null;
Sheet3Name = null;
break;
case "HAV1":
Sheet1Name = "Summary";
Sheet2Name = "Unit_Rates";
Sheet3Name = "Other_Charges";
break;
}
Basically, I can't figure out how to check for the correct sheet names based on the Switch. There will never be more than 3 sheets to check for, but there might be less than 3 - hence the null. Sheet1Name, etc are used in other functions, so I'd like to keep them...
Any thoughts?
|
|
|
|
|
It should be just like my "middle" case:
string tableName = row["TABLE_NAME"].ToString();
if (tableName == Sheet1Name ||
tableName == Sheet2Name ||
tableName == Sheet3Name)
{
return true;
}
It doesn't matter if any of the Sheet?Name values are null, the individual comparisons will be false which is exactly the behavior you want.
|
|
|
|
|
Ok, as a test I entered :-
foreach (DataRow row in dt.Rows)
{
string tableName = row["TABLE_NAME"].ToString();
if (tableName == Sheet1Name + "$" ||
tableName == Sheet2Name + "$" ||
tableName == Sheet3Name + "$")
{
Exists = true;
}
}
if (Exists == true)
{
MessageBox.Show("Match");
}
else
MessageBox.Show("No Match");
and even when Sheet3Name isn't in the spreadsheet...
if (Exists == true)
...is called.
Where am I going wrong?
|
|
|
|