|
The other day I have asked a question about a program which sits in a place where images come and once its started, function is that it updates when a new image is added, I have found a relevant code for this but I would like to know that would this do the desired task which I require. Appreciate any assistance.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Foundation;
using System.IO;
using System.Data.SqlClient;
using System.Data;
using System.Threading;
using WindowsFormsApplication1;
namespace HotFolderLoader
{
class Program
{
//private BaseFuncs theBaseFuncs = new BaseFuncs();
static void Main(string[] args)
{
string tt = System.Environment.MachineName;
Foundation.BaseFuncs theFoundation = new BaseFuncs();
if (tt == "NEO") //devel
{
//Foundation.getConstr.initialize("Data Source=neo\\neosqlserver;Initial Catalog=nmcvisualdb;Persist Security Info=True;User ID=sa;Password=xxxxxx");
Foundation.getConstr.initialize("Data Source=xx.xxx.xxx.xxx\\bcwebsql;Initial Catalog=nmcvisualdb;Persist Security Info=True;User ID=sa;Password=mr2BCweb");
//Foundation.getConstr.initialize("Data Source=xxx.xx.xxx.xxx\\nmcsql;Initial Catalog=nmcvisualdb;Persist Security Info=True;User ID=sa;Password=xxxxx");
}
else
{
Foundation.getConstr.initialize("Data Source=xx.xxx.xxx.xxx\\bcwebsql;Initial Catalog=nmcvisualdb;Persist Security Info=True;User ID=sa;Password=xxxxx");
}
//CCaseObject gg = new CCaseObject("test1-lil");
int idx = 0;
while (true)
{
System.Console.WriteLine("Starting");
doWork();
idx++;
System.Console.WriteLine("parsing: " + idx.ToString());
Thread.Sleep(80 * 1000);
}
}
public static void doWork()
{
BaseFuncs theBaseFuncs = new Foundation.BaseFuncs();
//D:\Google Drev\CloudHotFolder
//E:\google-drive\Google Drive\CloudHotFolder
DirectoryInfo dirInfo = new DirectoryInfo(@"D:\Google Drev\CloudHotFolder");
//DirectoryInfo dirInfo = new DirectoryInfo(@"E:\google-drive\Google Drive\CloudHotFolder");
FileInfo[] files = dirInfo.GetFiles("*.jpg");
string caseno = "";
string imageType = "";
string previousCaseno = "";
int i = 0;
System.Console.WriteLine("files: " + files.Count().ToString());
while (i < files.Count())
{
FileInfo fileItem = files[i];
bool nameOK = true;
bool isError = fileItem.Name.Contains("Error");
string[] fileData = fileItem.Name.Split('#');
if (fileData.Length < 2)
{
nameOK = false;
}
else
{
caseno = fileData[1];
imageType = fileData[2];
}
System.Console.WriteLine("parsing file: " + fileItem.FullName);
/*
* photo_org = 1,
floor_plan_org = 2,
Panorama_360 = 3,
photo_stage_2 = 4,
floor_plan_stage_2 = 5,
photo_thumbnail = 6,
Panorama_360_stage_2 = 7,
photo_final = 8,
floor_plan_final = 9,
Panorama_360_final = 10,
deleted = 11,
junk = 12,
visual_tour_org = 12,
visual_tour = 13
* */
string imgtypeid = "";
bool typeOK = true;
bool caseOK = true;
switch (imageType)
{
case "1":
case "4":
imgtypeid = "4"; //photo stage 2
break;
case "2":
case "5":
imgtypeid = "5"; //floor plan stage 2
break;
case "3":
case "7":
imgtypeid = "7";
break;
default:
typeOK = false;
break;
}
string sql = "select count(id) from cases where caseno ='" + caseno + "'";
string casecount = theBaseFuncs.doSQLScalar(sql);
if (casecount != "1")
{
caseOK = false;
}
if (typeOK && !isError && caseOK && nameOK)
{
try
{ //(expiryDate - DateTime.Now).Days < 30
if ((DateTime.Now - fileItem.LastAccessTime).Minutes > 1 && fileItem.Length > 10)
{
//check if filename exists
string checkSql = "select count (id) from images where case_id=" + theBaseFuncs.getCaseIDByCaseNo(caseno) + " and image_name='" + fileItem.Name + "'";
int count = Convert.ToInt16(theBaseFuncs.doSQLScalar(checkSql));
if (count > 0)
{
//delete image in db - and then normal upload new version
System.Console.Write("Deleting " + fileItem.Name + "in DB");
string delImages = "delete from images where case_id=" + theBaseFuncs.getCaseIDByCaseNo(caseno) + " and image_name='" + fileItem.Name + "'";
theBaseFuncs.doSQLnonQuery(delImages);
System.Console.Write("...Done");
}
int picID = theBaseFuncs.saveIMG2DB(fileItem, fileItem.Name, "image/jpeg", caseno, imgtypeid, 5, false);
SqlConnection connection = new SqlConnection("Data Source=xx.xxx.xxx.xxx\\bcwebsql;Initial Catalog=nmcvisualdb;Persist Security Info=True;User ID=sa;Password=xxxxx");
System.Drawing.Image img = System.Drawing.Image.FromFile(fileItem.FullName);
//System.Drawing.Image thumbImg = createHQThumb(fullImg, xparm);
string strSql = "UPDATE Images set Image_Data_Thumb=@imagedata ";
strSql += "where id=@picid";
SqlCommand updatecmd = new SqlCommand(strSql, connection);
updatecmd.CommandType = CommandType.Text;
SqlParameter pImg = new SqlParameter("@imagedata", SqlDbType.Image);
pImg.Value = BaseFuncs.imageToByteArray(BaseFuncs.createHQThumb(img, 600));
img.Dispose();
updatecmd.Parameters.Add(pImg);
SqlParameter pPicid = new SqlParameter("@picid", SqlDbType.Int);
pPicid.Value = picID;
updatecmd.Parameters.Add(pPicid);
connection.Open();
updatecmd.ExecuteNonQuery();
fileItem.Delete();
connection.Close();
//System.Console.WriteLine("counter: i=" + i.ToString() + " max=" + files.Count().ToString());
}
if (caseno != previousCaseno || i == files.Count() - 1) //do target check
{
if (i == files.Count())
{
System.Console.WriteLine("swapping caseno - lastfile in list!");
previousCaseno = caseno;
}
System.Console.Write("Making target check case: " + previousCaseno);
theBaseFuncs.logStatus(theBaseFuncs.getCaseIDByCaseNo(caseno), 3, 36, "Hotfolder target check");
if (theBaseFuncs.targetImgCheck(previousCaseno) == 1 && theBaseFuncs.targetPlanCheck(previousCaseno) == 1)
{
System.Console.Write("...target match");
Foundation.CCaseObject theCase = new Foundation.CCaseObject(previousCaseno);
theBaseFuncs.logStatus(theCase.CaseID, 3, 36, "Hotfolder target OK");
theCase.sendToNaming();
System.Console.Write("...case sent!!!!!!!!\n");
}
else
{
theBaseFuncs.logStatus(theBaseFuncs.getCaseIDByCaseNo(caseno), 3, 36, "Hotfolder target not OK");
System.Console.Write(".no match!\n");
}
}
previousCaseno = caseno;
}
catch (Exception ex)
{
string gg = ex.Message;
throw;
}
}
else
{
if (!isError)
{
fileItem.MoveTo(fileItem.FullName + ".type_error");
}
if (!caseOK)
{
fileItem.MoveTo(fileItem.FullName + ".caseno_error");
}
if (!nameOK)
{
fileItem.MoveTo(fileItem.FullName + ".navngivning_error");
}
}
i++;
}
}
}
}
modified 5-Oct-12 4:08am.
|
|
|
|
|
Firstly your code is not formatted so it is very difficult to read, please surround it with <pre> tags. Secondly, people here are unlikely to spend time analysing this code for you. Try it yourself to see whether it suits your needs and come back here when you have a more specific question.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
This is totally the wrong way to ask a question. See here[^].
First try yourself, if you get stuck or don't understand a specific part of it, come back here.
Nobody will do the work for you, but generally will point you in the right direction if they can.
|
|
|
|
|
my solution has two project. one is my actual project and another one is setup project. my actual project has one report folder where i store my all ssrs report.i have one folder in setup project called "SSRS_Repor". now i want that when i will do batch build then setup for my project regenerate and then i want to copy all files from report folder of my actual project to SSRS_Repor in my setup project. if i can do this kind of automation of copying files from one location to another folder of my setup project then i could be get rid of manual copying of rdls files. i hard this is possible by setup/deployment projects. i search google for this for details step-by-step instruction but got no good link. so please guide me how can i do it.
i post it to another forum too and some one told me below this
Open or create a setup/deployment project in Visual Studio 2005
Press F4 to display the Properties window
Click on the name of your setup/deployment project in the Solution Explorer
Click on the PostBuildEvent item in the Properties window to cause a button labeled "..." to appear
Click on the "..." button to display the Post-build Event Command Line dialog
Add a command line of your choice in the Post-build event command line text box
Build your project in Visual Studio and verify that the post-build event is executed after the main MSI build
so it is ok but what i need to write for copying files from one location to another location that is not clear to me. so now this is most important for me what to write for copying file during setup generation.
i got another clue like below one. script for setup Pre/Post Build Event but not aware properly. i got a sample like
copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"
the above statement or line is not clear to me. what i need to write in my case? so need step-by-step guide.
tbhattacharjee
|
|
|
|
|
copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"
This command copies a dll with the same name as the project, from the directory where it has been created to a directory called lib under the main solution directory. The /Y suppresses prompts to the user to confirm overwriting existing files. You can check the values of the macro parameters by editing the command and clicking on the Macros >> button.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
we know that a solution can have multiple project. so my solution has got two project like one is my main project and another is setup project.my main project has report folder and setup project has report folder too. now i want to write a script like as example copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"
which will copy all rdlc files from report folder of my main project to report folder of setup project. can you please give me a right script which will copy all rdlc files from report folder of my main project to report folder of setup project.
so just click on this link http://i.stack.imgur.com/hEZBa.png and you see my project structure and also understand from where i want to copy all rdlc files. thanks
tbhattacharjee
|
|
|
|
|
As I said before, you can find the relevant directory paths from the macros in your project, so you just need something like :
copy /Y "$(ProjectDir)rdlcdir\*.rdlc" "$(SolutionDir)lib"
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Hello. I am confronting basic polymorphic issue in my small project. Classes Layer1 use classes from Layer2. Here is my design for Layer1
public class BaseLayer1
{
public virtual Function()
{}
}
public class ChildLayer1 : BaseLayer1
{
BaseLayer2 base2 = new BaseLayer2();
public override Function()
{
base2.Function();
}
}
Now overriden function in child class gets called here. But virtual function in base class from Layer2 is not getting called here (hence; in child classes of Layer2 as well) . Here is what I am trying
public class BaseLayer2
{
public virtual Function()
{}
}
public class Child1Layer2 : BaseLayer2
{
public override Function()
{}
}
public class Child2Layer2 : Child1Layer2
{
public override Function()
{}
}
What's wrong with my understanding with polymorphism in c# ? Thanks for any pointers.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
When you everride a method, that gets called instead of the one in the base class, not as well as.
If you need the base class's method to be called as well, the inheriting class should call base.Function() .
|
|
|
|
|
DaveyM69 wrote: If you need the base class's method to be called as well, the inheriting class should call base.Function()
Thanks for reply. As mentioned earlier, I have divided my classes in two layers.
If see my first piece of code in Layer1 again, I have commented that: Should go to Base Class in Layer2 as well. Which means I am calling methods of some other class (not the Base Class of Layer1).
This world is going to explode due to international politics, SOON.
|
|
|
|
|
Ahh, I think I understand what you mean now.
You expect that the classes derived from BaseLayer2 will have their Function() called when you call base2.Function() ?
If so, that will only happen if the BaseLayer2 instance you call the method on (base2 ) is actually one of the derived classes. So:
BaseLayer2 base2 = new Child1Layer2();
or
BaseLayer2 base2 = new Child2Layer2();
|
|
|
|
|
THANK YOU. This is what I exactly meant. Since I am really learning it, can you explain WHY? Because this works absolutely fine in C++.
This world is going to explode due to international politics, SOON.
|
|
|
|
|
AmbiguousName wrote: this works absolutely fine in C++.
I'm sure it doesn't! Try it and if it does work, post the C++ code here.
|
|
|
|
|
What are you expecting?
using System;
public class BaseLayer1
{
public virtual void Function()
{ Console.WriteLine("BL1"); }
}
public class ChildLayer1 : BaseLayer1
{
BaseLayer2 base2 = new BaseLayer2();
public override void Function()
{
Console.WriteLine("CL1");
base2.Function();
}
}
public class BaseLayer2
{
public virtual void Function()
{Console.WriteLine("BL2");}
}
public class Child1Layer2 : BaseLayer2
{
public override void Function()
{Console.WriteLine("C1L2");}
}
public class Child2Layer2 : Child1Layer2
{
public override void Function()
{Console.WriteLine("C2L2");}
}
class Starter {
public static void Main(){
new ChildLayer1().Function();
}
}
Run this: you get
CL1
BL2
What do you think it should be? That is what you are calling: ChildLayer1 which calls BaseLayer2.
|
|
|
|
|
From what the OP posted I think when calling base2.Function(); he expects the Child1Layer2 and Child2Layer2 Function() to get called as well, which of course they won't as BaseLayer2 isn't necessarily either or any of those.
|
|
|
|
|
Yeah I got that impression too but it isn't really clear to me, so I thought I'd ask for the concrete answer he's expecting and go from there.
|
|
|
|
|
I have the following linq to sql statement that I want to use in a C# 2008 application that connects to a sql server 2008 r2 database.
var varGoodTransCount = (from t in rData.Trans
join iw in rData.Ibooks on t.Ibook_ID equals iw.Ibook_ID
join ip in rData.IPacks on iw.PID equals ip.PID
where ip.TNum == SPkgID
group ip by ip.TNum into g
select new { TNum = g.Key, Frequency = g.Count() }).FirstOrDefault();
The line of code that has the problem is
If (varGoodTransCount.Frequency != null)
When I try to reference varGoodTransCount.Frequency, the error message says this is not an instance of an object.
Thus can you tell me what is wrong and how I can fix the problem?
|
|
|
|
|
Without your database data it is not possible to be specific, but I would suspect that there are no rows which match your where condition.
As a result, FirstOrDefault will return a null , and you would get the error you describe.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
I am trying to write a linq to sql statement that is having a problem. The error message says the value is not an instance of an object.
The sql similar is the following:
select COUNT (Trans_id),ip.TNum, from dbo.Trans t inner join dbo.IWbook iw on t.IWork_ID = iw.IWork_ID inner join dbo.IPack ip on ip.PID = iw.PID where ip.TNum = @parameter_value group by ip.TNum
The linq is the following:
var varGoodTransCount = (from t in rData.Trans join iw in rData.Ibooks on t.Ibook_ID equals iw.Ibook_ID join ip in rData.IPacks on iw.PID equals ip.PID where ip.TNum == SPkgID group ip by ip.TNum into g select new { TNum = g.Key, Frequency = g.Count() }).FirstOrDefault();
I am checking for if (varGoodTransCount.frequency != null) when the error is occuring.
Thus can you tell me what could be wrong?
|
|
|
|
|
Read my previous messgae:
"I would suspect that there are no rows which match your where condition.
As a result, FirstOrDefault will return a null, and you would get the error you describe."If there are no rows that match, varGoodTransCount will be null, and varGoodTransCount.frequency will throw the exception when you try to use it.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
The report works in my computer. But when I deploy to another computer, it doesn't work. It got login in prompt.
I used SqlClient to get data then bind to DataSet, then set report source.
My environment: XP + VS 2003
DataBase : MS SQL 2005 (another server)
System : Windows Form
Client PC : XP
Does anyone have any suggestions?
Thanks
|
|
|
|
|
Hi. I myself am new to Crystal Reports and giving just a pointer. Have you tried this with Windows Authentication on Sql Server (on other computer)?
This world is going to explode due to international politics, SOON.
|
|
|
|
|
Hello everyone,
I'm pretty new to this forum and have a question regarding to using C# to aggregate a csv file containing the vehicle position data into certain time interval. The format of the data is like follows:
Timestamp(s), linkNo, ......... NOx, PM10, CO2,
27000, 10, ..... 0.4, 1.2, 2.0
27000, 12, ..... 0.3, 1.4 3.0
27010, 10, ..... 0.4, 1.2, 2.0
27010, 12, ..... 0.3, 1.4 3.0
27020, 10, ..... 0.4, 1.2, 2.0
27020, 12, ..... 0.3, 1.4 3.0
.......
</pre>
The problem i'm trying to solve is to aggregate these data into 5 minutes interval and sum up all the pollutants (i.e. NOX, PM1O and CO2) on each link, the final results i want to get is:
<pre lang="xml">
TimeSlot, linkNo, ......... SumNOx, SumPM10, SumCO2,
27000, 10, ..... 1.2, 3.6, 6.0
27000, 12, ..... 0.3, 4.2 9.0
27300, 10, ..... xx, xx, xx
27600, 12, ..... xx, xx, xx
.......
<pre lang="c#"><
i have written some code to get the sum of these pollutants based on links, but i don't know how to aggregate them into each 5 minutes slot. here is the code i written so far:
public partial class FormMain : Form
{
private double TimeSlotFunction(double SimulationTime)
{
double Time = 0;
for (int i = 1; i <= 24; i++)
{
double StartTime = 27000 + 300 * (i - 1);
double EndTime = StartTime + 300 * i;
if (StartTime < SimulationTime && SimulationTime <= EndTime)
{
Time = StartTime;
break;
}
}
return Time;
}
private class LinkData
{
public string LinkName;
public List<double> SimTime = new List<double>();
public List<double> timeSlot = new List<double>();
public List<double> NOx = new List<double>();
public List<double> PM10 = new List<double>();
public List<double> TotalCarbon = new List<double>();
public double SumNOx;
public double SumPM10;
public double SumTotalCarbon;
public double SumCO2;
}
foreach (string[] row in parsedData)
{
Entries.Add(row);
}
var LinkDict = new Dictionary<string, LinkData>();
for (int index = 1; index < Entries.Count; index++)
{
var row = Entries[index];
if (!LinkDict.ContainsKey(row[1]))
{
var newLink = new LinkData { LinkName = row[1] };
LinkDict.Add(row[1], newLink);
}
LinkDict[row[1]].SimTime.Add(Convert.ToDouble((row[0])));
LinkDict[row[1]].NOx.Add(Convert.ToDouble((row[19])));
LinkDict[row[1]].PM10.Add(Convert.ToDouble((row[20])));
LinkDict[row[1]].TotalCarbon.Add(Convert.ToSingle((row[21])));
}
foreach (var linkValue in LinkDict.Values)
linkValue.SumNOx = linkValue.NOx.Sum();
foreach (var linkValue in LinkDict.Values)
linkValue.SumPM10 = linkValue.PM10.Sum();
foreach (var linkValue in LinkDict.Values)
linkValue.SumTotalCarbon = linkValue.TotalCarbon.Sum();
foreach (var linkValue in LinkDict.Values)
using (var sw = new StreamWriter(@"D:\Work\C#\my project\my project\AlteredData.csv"))
{
foreach (var linkValue in LinkDict.Values)
{
var sb = new StringBuilder();
sb.Append(linkValue.LinkName);
sb.Append(",");
sb.Append(linkValue.SumNOx.ToString());
sb.Append(",");
sb.Append(linkValue.SumPM10.ToString());
sb.Append(",");
sb.Append(linkValue.SumTotalCarbon.ToString());
sb.Append(",");
sb.Append(linkValue.SumCO2.ToString());
sb.Append(",");
sw.WriteLine(sb.ToString());
}
}
}
I will be grateful if anyone can give me some advice.
cheers,
Simon
|
|
|
|
|
0
I am trying to write a linq to sql statement in a C# 2008 application that writes to a sql server 2008 database.
I am able to write the following statement where there are no syntax errors;
var fdrPkg = (from a in rData.ails where a.PID == S).
However the above editor will not let me write the select part of the statement where I add firstordefault.
Thus can you tell me what you think could be wrong and/or how I can change the linq to sql statement so that it will work for me?
|
|
|
|
|
Hi,
I made a software with several forms and a few of them have a private constructor and a public static method that is responsible for creating, initializing and showing it. Everything works fine within this application, but now I made another desktop application and I added a reference in this new application to the old one, so I could reuse all forms. Well, every form I call the constructor directly works fine (mdi forms for example), but those "special" classes with private constructors give me an error compiling in release mode, but weirdly it compiles fine in debug mode... Any ideas?
that's how i call
FrmRequestPwd.Show(true, "Solicite uma senha ao seu representante!");
public partial class FrmRequestPwd : Form
{
private FrmRequestPwd()
{
InitializeComponent();
}
public static void Show(bool isError, string msg)
{
using (FrmRequestPwd frm = new FrmRequestPwd())
{
frm.lblMsg.Text = msg;
frm.Text = isError ? "Erro" : "Aviso";
frm.txtSerialHD.Text = Kernel32Managed.GetVolumeSerial('C');
frm.ShowDialog();
}
}
private void btnOK_Click(object sender, EventArgs e)
{
Close();
}
}
Thanks!
Dirso
|
|
|
|
|