|
LinqValueCalculator is a class level variable i.e. it can be used across the class.
It is assigned in the constructor of the class and then used later.
|
|
|
|
|
hi every body ...why/when use the IEnumerable/IEnumerator interfaces.Thank you!
|
|
|
|
|
I suggest you start by reading this CodeProject article: [^].
You use these interfaces when the standard built-in iterators like 'foreach (which use these interfaces !) do not provide the functionality you wish to have in sequential access of a Collection of objects. Or, as in this example, to enable a Class which is not natively enumerable to act like it is by exposing a private collection defined in the Class.
For example, if you implement a Class that contains some form of custom Collection, which is private to the Class, but you want to be able to use 'foreach on an 'instance of that Class, and have the 'foreach loop move in sequence through the private custom-collection, you can have the Class implement (inherit from) IEnumerable, and then have the Class instance expose the Enumerator of the private Collection by making the private Collection's Enumerator be accessed in the implementation of the required 'GetEnumerator method.
Sound complex ? It's really not:
public class SomeClass: IEnumerable
{
private List<string> ListOStrings;
public SomeClass()
{
ListOStrings = new List<string>
{
"one","two","three"
};
}
public IEnumerator GetEnumerator()
{
return ListOStrings.GetEnumerator();
}
}
SomeClass someClass = new SomeClass();
foreach (var str in someClass)
{
Console.WriteLine(str);
} Also suggest you read: [^].
«A man will be imprisoned in a room with a door that's unlocked and opens inwards ... as long as it does not occur to him to pull rather than push» Wittgenstein
|
|
|
|
|
|
I am developing an addin for AutoCAD using c# with a WPF xaml dockable pane, I would like to sometimes show a webpage in the pane so I am using the WebBrowser, however it is not displaying the HTML5 content well as it defaults to IE7. using FEATURE_BROWSER_EMULATION I should be able to point it to using IE11 if installed, however setting the application that the addin is loaded into in the registry isnt working. I also tried the dll file that my addin creates and this doesnt work either. Is there a way to tell my WebBrowser in my dll within acad.exe to use IE11?
|
|
|
|
|
CodeProject is your friend: "Configuring the emulation mode of an Internet Explorer WebBrowser control" July, 2014: [^].
However, the fact you have such a complex embedding scenario, AutoCad/Add-In/WPF/WebBrowser, could be a constraining factor here, I would guess (and, I'll never know because I don't have AutoCad).
«A man will be imprisoned in a room with a door that's unlocked and opens inwards ... as long as it does not occur to him to pull rather than push» Wittgenstein
|
|
|
|
|
Thanks for the reply Bill, I just found that if I put the registry entry onto the HKEY_CURRENT_USER instead of HKEY_LOCAL_MACHINE it works, so I am a happy boy!
|
|
|
|
|
Glad you got it working. You might consider adding a Tip/Trick to CodeProject describing the problem, how you fixed it, and ... if the CP article did help you ... cite it.
cheers, Bill
«A man will be imprisoned in a room with a door that's unlocked and opens inwards ... as long as it does not occur to him to pull rather than push» Wittgenstein
|
|
|
|
|
The current search i have implemented into my program is limited to specific tables in the database. How do i go about adding the capabilities of searching all the tables within a database? In addition i would like to offer filters using check boxes to narrow the search parameters.
A JOIN would allow the search across multiple tables but the following line of code limits the search because of the "TestDescription='"
DataRow[] returnRows = DS.Tables[0].Select("TestDescription='" + search + "'");
I have provided my code below:
private void BtnSearch_Click(object sender, RoutedEventArgs e)
{
string ConnectionString = "Data Source=RATTLERR;Initial Catalog=medical;Integrated Security=True;";
SqlConnection conn = new SqlConnection(ConnectionString);
SqlDataAdapter dAdapter = new SqlDataAdapter("Select * FROM test", conn);
conn.Open();
DataSet DS = new DataSet();
string search = tbSearch.Text;
int result = 0;
if (tbSearch.Text.Length >= 1)
{
dAdapter.Fill(DS);
DataRow[] returnRows = DS.Tables[0].Select("TestDescription='" + search + "'");
result = returnRows.Length;
if (result > 0)
{
dgInfo.ItemsSource = returnRows.CopyToDataTable().DefaultView;
}
else
{
System.Windows.MessageBox.Show("No Records Found");
}
conn.Close();
}
}
modified 3-Jan-15 14:06pm.
|
|
|
|
|
|
Thank you for the information i will give it a try and see how it turns out..
|
|
|
|
|
Hi everyone,
I'm facing a problem while sending bulk mails with multiple attachments.
I could send mails to everyone but only the first recipient was able to receive the attachments and rest of the recipients could receive the emails with malfunctioning attachment.
error from the second recipients gmail when I checked it out - Quote: Whoops!
There was a problem displaying this image.
Retrying...
Thanks in advance.
|
|
|
|
|
That is not a question that can be answered here. You need to get that recipient to investigate exactly what happened, or to get you a copy of the raw message data.
|
|
|
|
|
Hello,
I'm trying to email images to my tumblr blog. I can go into my live account, create an email, attach an image and send it -- this works fine and post to my tubmlr blog fine. However, when I try to to do the same thing in my C# application nothing happens, no error, and nothing post to tumblr. I was hoping somebody could give me some insight as to what live.com does differently than me when sending email. My code is below, thanks in advanced.
SmtpClient smtpClient = new SmtpClient();
NetworkCredential basicCredential = new NetworkCredential("myliveaccount@live.com", "mylivepass");
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress("myliveaccount@live.com");
smtpClient.Host = "smtp.live.com";
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
smtpClient.Timeout = (60 * 5 * 1000);
smtpClient.EnableSsl = true;
message.From = fromAddress;
message.Subject = "subject";
message.IsBodyHtml = false;
message.Body = "#Tag1 #Tag2 #Tag3 #Tag4";
message.To.Add("tumblrblogemail@tumblr.com");
string attachmentFilename = @"C:\0103150633034149.jpg";
Attachment attachment = new Attachment(attachmentFilename, MediaTypeNames.Application.Octet);
ContentDisposition disposition = attachment.ContentDisposition;
disposition.CreationDate = File.GetCreationTime(attachmentFilename);
disposition.ModificationDate = File.GetLastWriteTime(attachmentFilename);
disposition.ReadDate = File.GetLastAccessTime(attachmentFilename);
disposition.FileName = Path.GetFileName(attachmentFilename);
disposition.Size = new FileInfo(attachmentFilename).Length;
disposition.DispositionType = DispositionTypeNames.Attachment;
message.Attachments.Add(attachment);
smtpClient.Send(message);
|
|
|
|
|
try by adding ssl port
smtpClient.Port = 587;
|
|
|
|
|
Hey, thanks for replying. yup, I tried that, same results...
Some how or another, Tumblr knows the difference between hotmail and an application using Hotmail smtp. I can't for the life of me figure out what it is though.
|
|
|
|
|
You should check the required settings for email access. Login to your hotmail account and use the help system.
|
|
|
|
|
Interesting, so it works if I don't attach the photo.....
|
|
|
|
|
Which suggests that your attachment is causing a problem.
|
|
|
|
|
How big, in bytes, is your attachment after being Base64 encoded?
|
|
|
|
|
What do you mean? The above code is all I do. It's the same image I use in my email web client (like hotmail.com).
|
|
|
|
|
Most email systems put a limit on the size of attachments. If the combined size, after converting the binary attachments to a Base64 string, of the email subject, body and encoded attachments exceed a certain limit, the email is not sent.
Every place I've ever worked has a 10MB limit on attachments.
If you're using the hotmail servers, the last I heard that limit is 50MB per attachment.
|
|
|
|
|
Oh, thanks, but it's way under that. I can send the picture just fine using Hotmail, it's only when I try to use Hotmail SMTP via C# that it fails.
|
|
|
|
|
Hello
I figured this out for all that may be interested. You have to set the attachment content type to "image/jpeg".
Thanks everyone.
|
|
|
|
|
I am having trouble with DeviceIoControl() and control code FSCTL_ENUM_USN_DATA and I am also having difficulties understanding the documentation for FSCTL_ENUM_USN_DATA.
I created the structs for MFT_ENUM_DATA and USN_RECORD_V3 and passed them as I understood the documentation, as pointers.
However, the first and only USN record I get in return (the values of the USN_RECORD_V3 buffer) is only garbage. Also, the outBufferSize should be 555 (explained at the doc for USN_RECORD_V3), but if I exceed 175 bytes, I get a System.AccessViolationError .
How to calculate outBufferSize :
MaximumChangeJournalRecordSize =
( (MaximumComponentLength - 1) * sizeof(WCHAR)
+ sizeof(USN_RECORD_V3) );
I would appreciate if you could help me finding the mistake in my code or in my thought process. In advance, a lot of thanks to you guys!
Edit: Problematic code starts below comment:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
public class Win32
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct USN_JOURNAL_DATA_V0
{
public UInt64 UsnJournalId;
public Int64 FirstUsn;
public Int64 NextUsn;
public Int64 LowestValidUsn;
public Int64 MaxUsn;
public UInt64 MaximumSize;
public UInt64 AllocationDelta;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct USN_JOURNAL_DATA_V1
{
public UInt64 UsnJournalId;
public Int64 FirstUsn;
public Int64 NextUsn;
public Int64 LowestValidUsn;
public Int64 MaxUsn;
public UInt64 MaximumSize;
public UInt64 AllocationDelta;
public UInt16 MinSupportedMajorVersion;
public UInt16 MaxSupportedMajorVersion;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct USN_RECORD_V3
{
public UInt32 RecordLength;
public UInt16 MajorVersion;
public UInt16 MinorVersion;
public Byte FileReferenceNumber;
public Byte ParentFileReferenceNumber;
public Int64 Usn;
public FILETIME TimeStamp;
public UInt32 Reason;
public UInt32 SourceInfo;
public UInt32 SecurityId;
public UInt32 FileAttributes;
public UInt16 FileNameLength;
public UInt16 FileNameOffset;
public Char FileName;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct MFT_ENUM_DATA_V1
{
public UInt64 StartFileReferenceNumber;
public Int64 LowUsn;
public Int64 HighUsn;
public UInt16 MinMajorVersion;
public UInt16 MaxMajorVersion;
}
[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DeviceIoControl(
SafeHandle hDevice,
UInt32 dwIoControlCode,
IntPtr lpInBuffer,
UInt32 nInBufferSize,
out IntPtr lpOutBuffer,
UInt32 nOutBufferSize,
out UInt32 lpBytesReturned,
IntPtr lpOverlapped
);
[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DeviceIoControl(
SafeHandle hDevice,
UInt32 dwIoControlCode,
IntPtr lpInBuffer,
UInt32 nInBufferSize,
out USN_JOURNAL_DATA_V1 lpOutBuffer,
UInt32 nOutBufferSize,
out UInt32 lpBytesReturned,
IntPtr lpOverlapped
);
[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DeviceIoControl(
SafeHandle hDevice,
UInt32 dwIoControlCode,
ref MFT_ENUM_DATA_V1 lpInBuffer,
UInt32 nInBufferSize,
out USN_RECORD_V3 lpOutBuffer,
UInt32 nOutBufferSize,
out UInt32 lpBytesReturned,
IntPtr lpOverlapped
);
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern SafeFileHandle CreateFile(
string lpFileName,
uint dwDesiredAccess,
uint dwShareMode,
IntPtr lpSecurityAttributes,
uint dwCreationDisposition,
uint dwFlagsAndAttributes,
IntPtr hTemplateFile
);
[DllImport("kernel32.dll")]
public static extern void ZeroMemory(IntPtr ptr, int size);
}
namespace UsnTest01
{
class Program
{
#region constants
public const short FILE_ATTRIBUTE_NORMAL = 0x80;
public const short INVALID_HANDLE_VALUE = -1;
public const UInt32 GENERIC_READ = 0x80000000;
public const UInt32 GENERIC_WRITE = 0x40000000;
public const UInt32 FILE_SHARE_READ = 0x00000001;
public const UInt32 FILE_SHARE_WRITE = 0x00000002;
public const UInt32 CREATE_NEW = 1;
public const UInt32 CREATE_ALWAYS = 2;
public const UInt32 OPEN_EXISTING = 3;
private const UInt32 FILE_DEVICE_FILE_SYSTEM = 0x00000009;
private const UInt32 METHOD_NEITHER = 3;
private const UInt32 METHOD_BUFFERED = 0;
private const UInt32 FILE_ANY_ACCESS = 0;
private const UInt32 FILE_SPECIAL_ACCESS = 0;
private const UInt32 FILE_READ_ACCESS = 1;
private const UInt32 FILE_WRITE_ACCESS = 2;
public const UInt32 FSCTL_QUERY_USN_JOURNAL = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (61 << 2) | METHOD_BUFFERED;
public const UInt32 FSCTL_ENUM_USN_DATA = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (44 << 2) | METHOD_NEITHER;
public const UInt32 FSCTL_READ_USN_JOURNAL = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (46 << 2) | METHOD_NEITHER;
#endregion constants
static void Main(string[] args)
{
SafeFileHandle handleValue = null;
handleValue = Win32.CreateFile(
@"\\.\C:",
GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
IntPtr.Zero,
OPEN_EXISTING,
0,
IntPtr.Zero);
if (handleValue.IsInvalid)
{
Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
}
Win32.USN_JOURNAL_DATA_V1 ujd = new Win32.USN_JOURNAL_DATA_V1();
uint lpBytesReturned;
bool retJournalId = Win32.DeviceIoControl(
handleValue,
FSCTL_QUERY_USN_JOURNAL,
IntPtr.Zero,
0,
out ujd,
(uint)Marshal.SizeOf(ujd),
out lpBytesReturned,
IntPtr.Zero);
Console.WriteLine("Wert ist " + ujd.UsnJournalId.ToString("X4"));
Win32.USN_RECORD_V3 usnRecordV3;
Win32.MFT_ENUM_DATA_V1 mftEnumDataV1 = new Win32.MFT_ENUM_DATA_V1 { StartFileReferenceNumber = 0 };
uint outBufferSize = (uint)((255 - 1) * sizeof(Char) + Marshal.SizeOf(typeof(Win32.USN_RECORD_V3)));
lpBytesReturned = 0;
bool retUsnData = false;
while (retUsnData != true)
{
retUsnData = Win32.DeviceIoControl(
handleValue,
FSCTL_ENUM_USN_DATA,
ref mftEnumDataV1,
(uint)Marshal.SizeOf(mftEnumDataV1),
out usnRecordV3,
175,
out lpBytesReturned,
IntPtr.Zero);
}
int r1 = Marshal.GetLastWin32Error();
int r2 = Marshal.GetHRForLastWin32Error();
if (retUsnData == false)
{
Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error());
}
}
}
}
|
|
|
|
|