C# - Use Flush Parameter With Encoder.GetBytes Method?
Oct 4, 2010
This link explains the Encoder.GetBytes Method and there is a bool parameter called flush explained too . The explanation of flush is : true if this encoder can flush its state at the end of the conversion; otherwise, false. To ensure correct termination of a sequence of blocks of encoded bytes, the last call to GetBytes can specify a value of true for flush.but I didn't understand what flush does?
When should I call the Flush() method (TextWriter.Flush() / StreamWriter.Flush() / BinaryWriter.Flush() / etc) ? Should I call it everytime I finish writing a stream?
I have a SqlDataReader and need to read a varbinary(max) column from it using the SqlDataReader.GetBytes() method. This method populates a byte array and therefore needs to know what length of data to read.This is where I get confused.. Clearly I want to read all the data that has been returned from the database in this row/column so what 'length' parameter should I pass?As far as I can see, the SqlDataReader doesn't provide any methods to discover what length of data is available, therefore this method seems fairly awkward to me.I'm tempted to just pass int.MaxValue here and forget about the issue but something about this doesn't sit right with me.
I am aware that I can instead call
byte[] value = (byte[])dataReader["columnName"];
.. and this seems to completely take care of the length issue internally. However I am working with a set of complicated code generation templates that have been built around the SqlDataReader.GetXXXX() methods. So I am tied into using GetBytes and need to understand its proper usage.
I have a SqlDataReader and need to read a varbinary(max) column from it using the SqlDataReader.GetBytes() method. This method populates a byte array and therefore needs to know what length of data to read.This is where I get confused.. Clearly I want to read all the data that has been returned from the database in this row/column so what 'length' parameter should I pass?As far as I can see, the SqlDataReader doesn't provide any methods to discover what length of data is available, therefore this method seems fairly awkward to me.I'm tempted to just pass int.MaxValue here and forget about the issue but something about this doesn't sit right with me.
Dim fstream = new filestream(some file here) dim bwriter = new binarywriter(fstream) while not end of file read from source file bwriter.write() bwriter.flush() end while
The question I have is the following. When I call bwriter.flush() does it also flush the fstream object? Or should I have to explicitly call fstream.flush() such as given in the following example:
[Code]...
A few people suggested that I need to call fstream.flush() explicitly to make sure that the data is written to the disk (or the device). However, my testing shows that the data is written to the disk as soon as I call flush() method on the bwriter object.
i have an image in an bytearray. I convert thiy bytearray to an image an do a resize on it which works fine. But after that i want to convert it back to a bytearray and then i get a "Value Cannot be null Parameter name: encoder" Exception when trying to do a IMG.SAVE(MEMORYSTREAM, IMAGE.RAWFORMAT)
I have a method which requires a parameter to be passed in. I would like to use the Addhandler to call the method through a dynamically created button control's click event.
When I include () in the AddressOf, VS complains: 'AddressOf' operand must be the name of a method (without parentheses).
When I exclude the brackets, VS complains: Method '...' does not have a signature compatible with delegate...
Is there a way to choose between different methods and pass one into another method ?
Sub conditionnal_binding(ByVal list_box_reference As ListBox, ByVal list_box_final As ListBox, _ ByVal dico_source As Dictionary(Of String, List(Of String)), _ ByVal my_methode As ??? ) ' DO SOMETHING End Sub
I wrote ??? because I don't know how to call another method inside a method. I would like to choose between different "sub-methods". Here is how I would like to use my method :
I'm trying to code a class of RandomNumber. One of the class methods needs to populate a "List (Of RandomNumber)" ... which was passed as a parameter to the method ... with 10 random numbers between 1 and 50. DEAD SIMPLE :)
I'm working in Visual Basic Express 2008, and have created a little application to run a marquee to display information for our hospital, that will auto-update.
I am trying to position the form to sit flush with the top-right portion of the screen. I set the position manually, to 800,0 which does move it to about the area i'm looking for, but depending on resolution (which varies throughout the facility) it will not sit flush with the right side of the screen.
Is there anyway to set form parameters to right-align?
I have a a method drawPaper(g, rect,.....).This drawPaper method is called on from another method (PrintPaper method) with the parameters passed on as (e.graphics, rect, .....) i.e drawpaper (e.graphics, rect, .....) why is the method called with the e.graphics argument not with g as per the method.
Is it accepted to have a method parameter named the same as a property? At least it gives no error, even if in the same letter-case.. How does the compiler distinguish? does it always prioritize the local parameter?
So for instance I have this method: LoadFunkyInfo(byval funkyData as string) And I pass it something like this:
LoadFunkyInfo(giantTable.Rows.Item(0).Item("blahName")). Should I do this instead?
dim foo as string = giantTable.Rows.Item(0).Item("blahName") LoadFunkyInfo(foo)
I read somewhere long ago, that it's better to assign the method to a variable and pass that variable to a method, as opposed to passing the method as a parameter. Is that still true? Or true at all?
I have traditionally coded empty strings like this "", but for a couple of years now, I have been using String.Empty.I also normally never use optional parameters, but I'm refactoring a solution that's tied into my ERP, and I don't want to break anything. One of the changes was to add a parameter to proc, which pushes a new parameter into the method from which it is called. I coded it like this:
Optional BackReferenceID As String = String.Empty
But I got a syntax error "Constant expression is required." I guess String.Empty is non-deterministic??? Anyway, it seems like a bug. The workaround is of course to use double quotes.
I'm currently working on being able to import a DLL written in Fortran into Visual Basic. I've got all the basics down, so now I'm trying to take it a step further. The title basically says it all, but I'll explain what it is I'm trying to do anyways.
For kicks and giggles, let's just assume I want to pass an object that has three double values in it, possibly representing a point in space in three dimensions. In my Fortran method, I want to take that object, print out the x value, then change the x value to 7.5. Here's my Fortran code that does just that.[code]...
What happened when parameter passing. Here is a test project I write. Public Class Form1 '1.test string Private Sub btnString_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnString.Click Dim str1 As String = "x" [Code] .....
From the project you can see, when pass integer type parameter (value type) into a method , if use ByVal keyword, the value won't change. If use ByRef keyword, the value will change (I can understand it, to my understanding, when using ByVal, It pass the value of the argument to the method; when using BvRef, it pass the address of the argument to the method, so the value can be rewrite)
Well, for the following two scenarios , I can't understand why. String type is reference type, but it acts like integer type. Val type is also reference type, but no matter what you use(ByVal or ByRef), the result will be the same. So my question is what actually passed into method? What's the underlying mechanism about pass parameter? What's the effect of ByRef and ByVal to value type and reference type?
I have already defined in my SELECT statement in TableAdapter to tell it what to do if the parameters are Null:
SELECT a.ID, a.NameID, b.BNameID FROM a INNER JOIN b ON a.ID = b.ID WHERE ((@NameID IS NULL) OR (a.NameID = @NameID)) AND ((@BNameID IS NULL) OR (b.BNameID = @BNameID))
Jst recently i came across the select() method of data table and felli n love with it instantaneously.
Basically I want query the data table on a date field, unfortunately the format of the date string returned from y database in to data-table and the date string i'm passing as inputs are different.
How can i make sure that the data is compared irrespective of the formats ? Can I use something like SqlParameters whoes data type is date for comparison ??
this is what i'm tying :
dim dat as date = "#1/3/2009#" dt.select("StzDate ='" & dat "'") entry in datateable dt : StzDate : 3/1/2009 12:00:000 Am I do'in something wrong ??
Also, can anyone redirect me to some site where I can learn a bit more about passing parameters to the select statement,etc...
In VB.NET, it is entirely possible to pass an integer as a string parameter to a method without calling .ToString() - it's even possible to call .ToString without the ()'s. The code will run without a problem, VB will interpret the integer as a string without having been told to. In C#, these would cause compilation errors - you are required to call .ToString() and to call it correctly in that situation before it will compile. Is there a way to make the VB compilation process check for the same things as the C# compilation process? Would it be best practice in a mixed team to force this check?
We recently came across some sample code from a vendor for hashing a secret key for a web service call, their sample was in VB.NET which we converted to C#. This caused the hashing to produce different input. It turns out the way they were generating the key for the encryption was by converting a char array to a string and back to a byte array. This led me to the discovery that VB.NET and C#'s default encoder work differently with some characters.
VB: Dim b As Char() = {Chr(149)} Console.WriteLine(Encoding.Default.GetBytes(b)(0))
The C# output is 63, while VB is the correct byte value of 149.if you use any other value, like 145, etc, the output matches.Walking through the debugging, both VB and C# default encoder is SBCSCodePageEncoding.I have corrected the sample code by directly initializing a byte array, which it should have been in the first place, but I still want to know why the encoder, which should not be language specific, appears to be just that.
addressing the need for getting the bytes of an object. But I am wondering if there is an approach to calling BitConverter.GetBytes on a generic type where I know the type is a primitive (Int32, UInt16, etc).
Public Sub Foobar(Of T as Structure)() Dim x as T 'Assume T is declared as Int32 Dim y() as Byte y = System.BitConverter.GetBytes(x) End Sub
The above will throw your usual error:
Overload resolution failed because no accessible 'GetBytes' can be called with these arguments: 'Public Shared Function GetBytes(value As Double) As Byte()': Value of type 'T' cannot be converted to 'Double'. 'Public Shared Function GetBytes(value As Single) As Byte()': Value of type 'T' cannot be converted to 'Single'.
[code]....
One solution I think would work is a large Select Case calling GetType(), but that is horrendously slow (because of boxing) and looks ugly. I would think that since I call my higher level class with a primitive data type for T, that the compiler would be smart enough to figure it out, but I assume I am not providing enough information for it to derive what T's underlying value is at compile time for the invoked instances.
I have downloaded and installed the Windows Media Encoder and the SDK. I am trying to convert WAV files to WMA files (& vice versa) using VB2005 Pro. I have found plenty of examples on google for working with video but no examples for audio.
I'm attempting to discard the contents of a System.Net.Sockets.Socket send buffer using theSocket.IOControl(IOControlCode.Flush, .... Does anybody know whether VB.NET supports this command? I've tried supplying 'Nothing' and 'Nothing' for both required parameters, also empty and populated byte arrays in combination with 'Nothing' for both required parameters, but I consistently get an 'Invalid argument' exception. I've tried a web search for an answer, but the only mention I've found was a question asked about 8 years ago, with still no answer.
I've been trying to trace down a bug for hours now and it has come down to this:
Dim length as Integer = 300 Dim buffer() As Byte = binaryReader.ReadBytes(length) Dim text As String = System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length)
The problem is the buffer contains 300 bytes but the length of the string 'text' is now 285. When I convert it back to bytes, the length is 521 bytes...The same code is a normal WinForms app works perfectly. The data being read by the binary reader is a UTF8 encoded string. Any ideas why Silverlight is playing funny buggers?
I was looking up how to make a screen recorder when I ran into a source code that uses Windows Media Encoder SDK. I tried it out and it crashes saying that Data Execution Protection stopped the program. So, I debugged the program and found that when it creates a new instance that this is the cause of the crash. [code]
Exists a good tutorial or example that shows how to use these classes from namespace System.Drawing.Imaging.
My idea is, to produce Bitmaps and to compress them. I don't know if for my case IO Streaming is important because I don't want to save the bitmap on my hard disk.