|
Hi
I'm currently working on a program for automated print queue creation (move, copy, clone). Creating a print queue with AddPrinter on remote server works, but I can't figure out how to apply the DEVMODE. The code works as follows:
-using OpenPrinter to get the handle to the printer on the source server
-query printer with GetPrinter to get Printer_Info_2 and DEVMODE structure
-changing the needed values in the Printer_Info_2 and DEVMODE structure
-using AddPrinter to create the printer on the destination server
now I want to set the "Document Defaults" (like Collate or Orientation), but the API call DocumentProperties fails....
Public Function fMovePrinter( _<br />
<br />
ByVal sSource As String, _<br />
<br />
ByVal sDestination As String, _<br />
<br />
ByVal sPrinter As String, _<br />
<br />
ByVal lvSource As ListView, _<br />
<br />
ByVal lvDestination As ListView, _<br />
<br />
ByVal bDelete As Boolean _<br />
<br />
) As Boolean<br />
<br />
'first open the source printer to get the handle<br />
<br />
Dim hSource As IntPtr<br />
<br />
Dim pd As New PRINTER_DEFAULTS<br />
<br />
pd.DesiredAccess = PrinterAccessRights.PRINTER_ALL_ACCESS<br />
<br />
If Not OpenPrinter(sPrinter, hSource, pd) Then<br />
<br />
Throw New Exception(Err.LastDllError & " unable to OpenPrinter " & sPrinter)<br />
<br />
Return False<br />
<br />
End If<br />
<br />
'now call the GetPrinter API to get the PRINTER_INFO_2 structure<br />
<br />
Dim BytesWritten As Int32 = 0<br />
<br />
Dim ptBuf As IntPtr<br />
<br />
Dim pi2 As New PRINTER_INFO_2<br />
<br />
Dim dmOut As New DEVMODE<br />
<br />
ptBuf = Marshal.AllocHGlobal(1)<br />
<br />
'Get the number of bytes needed<br />
<br />
If Not GetPrinter(hSource, 2, ptBuf, 1, BytesWritten) Then<br />
<br />
If BytesWritten > 0 Then<br />
<br />
Marshal.FreeHGlobal(ptBuf)<br />
<br />
ptBuf = Marshal.AllocHGlobal(BytesWritten)<br />
<br />
'Get the PRINTER_INFO_2 structure<br />
<br />
If GetPrinter(hSource, 2, ptBuf, BytesWritten, BytesWritten) Then<br />
<br />
Marshal.PtrToStructure(ptBuf, pi2)<br />
<br />
If pi2.lpDeviceMode > 0 Then<br />
<br />
'Get the DEVMODE structure<br />
<br />
Dim ptrDevMode As New IntPtr(pi2.lpDeviceMode)<br />
<br />
Marshal.PtrToStructure(ptrDevMode, dmOut)<br />
<br />
End If<br />
<br />
Else<br />
<br />
Marshal.FreeHGlobal(ptBuf)<br />
<br />
ClosePrinter(hSource)<br />
<br />
Throw New Exception(Err.LastDllError & " unable to GetPrinter #2 " & sPrinter)<br />
<br />
Return False<br />
<br />
End If<br />
<br />
'free ptBuf<br />
<br />
Marshal.FreeHGlobal(ptBuf)<br />
<br />
ClosePrinter(hSource)<br />
<br />
Else<br />
<br />
Throw New Exception(Err.LastDllError & " BytesWritten " & BytesWritten)<br />
<br />
Return False<br />
<br />
End If<br />
<br />
Else<br />
<br />
Throw New Exception(Err.LastDllError & " unable to GetPrinter #1 " & sPrinter)<br />
<br />
Return False<br />
<br />
End If<br />
<br />
'modify the pi2 structure with the needed parameters<br />
<br />
Dim strPrinter As String<br />
<br />
strPrinter = sPrinter<br />
<br />
If strPrinter.LastIndexOf("\") > 0 Then<br />
<br />
strPrinter = strPrinter.Remove(strPrinter.IndexOf("\"), strPrinter.LastIndexOf("\") + 1)<br />
<br />
End If<br />
<br />
With pi2<br />
<br />
.pPrinterName = strPrinter<br />
<br />
.pServerName = sDestination<br />
<br />
.pPortName = "LPT1:"<br />
<br />
End With<br />
<br />
'change the DEVMODE structure with the needed parameters<br />
<br />
With dmOut<br />
<br />
.pDeviceName = "\\" & sDestination & "\" & strPrinter<br />
<br />
End With<br />
<br />
'copy the devmode structure back into the PRINTER_INFO_2 structure<br />
<br />
'Dim hdmIn As IntPtr<br />
<br />
pi2.lpDeviceMode = Marshal.AllocHGlobal(Marshal.SizeOf(dmOut))<br />
<br />
Marshal.StructureToPtr(dmOut, pi2.lpDeviceMode, False)<br />
<br />
<br />
<br />
'create the printer on the destination<br />
<br />
Dim hDestination As IntPtr<br />
<br />
hDestination = AddPrinter("\\" & sDestination, 2, pi2)<br />
<br />
If hDestination = 0 Then<br />
<br />
Throw New Exception(Err.LastDllError & " unable to AddPrinter")<br />
<br />
Return False<br />
<br />
End If<br />
<br />
Dim intRet As Int32<br />
<br />
intRet = DocumentProperties(IntPtr.Zero, hDestination, strPrinter, pi2.lpDeviceMode, pi2.lpDeviceMode, DocumentPropertiesModes.DM_IN_BUFFER Or DocumentPropertiesModes.DM_OUT_BUFFER)<br />
<br />
Debug.Print(Err.LastDllError)<br />
<br />
Return True<br />
<br />
<br />
<br />
<br />
<br />
End Function<br />
<br />
<br />
<br />
|
|
|
|
|
ok, I updated the code and now the DocumentProperties function returns no error... but the settings are not applied on the new printer....
Public Function fMovePrinter( _<br />
ByVal sSource As String, _<br />
ByVal sDestination As String, _<br />
ByVal sPrinter As String, _<br />
ByVal lvSource As ListView, _<br />
ByVal lvDestination As ListView, _<br />
ByVal bDelete As Boolean _<br />
) As Boolean<br />
<br />
'first open the source printer to get the handle<br />
Dim hSource As IntPtr<br />
Dim pd As New PRINTER_DEFAULTS<br />
<br />
pd.DesiredAccess = PrinterAccessRights.PRINTER_ALL_ACCESS<br />
If Not OpenPrinter(sPrinter, hSource, pd) Then<br />
Throw New Exception(Err.LastDllError & " unable to OpenPrinter " & sPrinter)<br />
Return False<br />
End If<br />
<br />
'now call the GetPrinter API to get the PRINTER_INFO_2 structure<br />
Dim BytesWritten As Int32 = 0<br />
Dim ptBuf As IntPtr<br />
Dim pi2 As New PRINTER_INFO_2<br />
Dim dmOut As New DEVMODE<br />
<br />
ptBuf = Marshal.AllocHGlobal(1)<br />
<br />
'Get the number of bytes needed<br />
If Not GetPrinter(hSource, 2, ptBuf, 1, BytesWritten) Then<br />
If BytesWritten > 0 Then<br />
Marshal.FreeHGlobal(ptBuf)<br />
ptBuf = Marshal.AllocHGlobal(BytesWritten)<br />
'Get the PRINTER_INFO_2 structure<br />
If GetPrinter(hSource, 2, ptBuf, BytesWritten, BytesWritten) Then<br />
Marshal.PtrToStructure(ptBuf, pi2)<br />
If pi2.lpDeviceMode > 0 Then<br />
'Get the DEVMODE structure<br />
Dim ptrDevMode As New IntPtr(pi2.lpDeviceMode)<br />
Marshal.PtrToStructure(ptrDevMode, dmOut)<br />
End If<br />
Else<br />
Marshal.FreeHGlobal(ptBuf)<br />
ClosePrinter(hSource)<br />
Throw New Exception(Err.LastDllError & " unable to GetPrinter #2 " & sPrinter)<br />
Return False<br />
End If<br />
'free ptBuf<br />
Marshal.FreeHGlobal(ptBuf)<br />
'ClosePrinter(hSource)<br />
Else<br />
Throw New Exception(Err.LastDllError & " BytesWritten #1 " & BytesWritten)<br />
Return False<br />
End If<br />
<br />
Else<br />
Throw New Exception(Err.LastDllError & " unable to GetPrinter #1 " & sPrinter)<br />
Return False<br />
End If<br />
<br />
'modify the pi2 structure with the needed parameters<br />
Dim strPrinter As String<br />
strPrinter = sPrinter<br />
If strPrinter.LastIndexOf("\") > 0 Then<br />
strPrinter = strPrinter.Remove(strPrinter.IndexOf("\"), strPrinter.LastIndexOf("\") + 1)<br />
End If<br />
<br />
With pi2<br />
.pPrinterName = strPrinter<br />
.pServerName = sDestination<br />
.pPortName = "LPT1:"<br />
End With<br />
<br />
'change the DEVMODE structure with the needed parameters<br />
Dim strFullPrinterPath As String = "\\" & sDestination & "\" & strPrinter<br />
With dmOut<br />
.pDeviceName = strFullPrinterPath<br />
End With<br />
<br />
'copy the devmode structure back into the PRINTER_INFO_2 structure<br />
'Dim hdmIn As IntPtr<br />
pi2.lpDeviceMode = Marshal.AllocHGlobal(Marshal.SizeOf(dmOut))<br />
Marshal.StructureToPtr(dmOut, pi2.lpDeviceMode, False)<br />
<br />
If bDelete = True Then<br />
Call DeletePrinter(hSource)<br />
hSource = IntPtr.Zero<br />
End If<br />
<br />
'create the printer on the destination<br />
Dim hDestination As IntPtr<br />
hDestination = AddPrinter("\\" & sDestination, 2, pi2)<br />
If hDestination = 0 Then<br />
If Err.LastDllError = 1802 Then<br />
Call DeletePrinter(hSource)<br />
Debug.Print(Err.LastDllError.ToString)<br />
hDestination = AddPrinter("\\" & sDestination, 2, pi2)<br />
If hDestination = 0 Then<br />
Throw New Exception(Err.LastDllError & " unable to AddPrinter, tried twice because printer allready exists on " & sDestination)<br />
Return False<br />
End If<br />
Else<br />
Throw New Exception(Err.LastDllError & " unable to AddPrinter")<br />
Return False<br />
End If<br />
End If<br />
<br />
If hSource <> 0 Then<br />
ClosePrinter(hSource)<br />
hSource = IntPtr.Zero<br />
End If<br />
<br />
'dmOut = Nothing<br />
<br />
Dim intRet As Int32<br />
'get size of the DEVMODE structure<br />
intRet = DocumentProperties(IntPtr.Zero, hDestination, strFullPrinterPath, IntPtr.Zero, IntPtr.Zero, DocumentPropertiesModes.DM_GETSIZE)<br />
If intRet < 0 Then<br />
Throw New Exception(Err.LastDllError & " unable to get DocumentProperties #1")<br />
Return False<br />
End If<br />
<br />
'create a new instance of the DEVMODE structure with size returned<br />
Dim hdmIn As IntPtr<br />
hdmIn = Marshal.AllocHGlobal(intRet)<br />
<br />
intRet = DocumentProperties(IntPtr.Zero, hDestination, strFullPrinterPath, hdmIn, IntPtr.Zero, DocumentPropertiesModes.DM_OUT_BUFFER)<br />
If intRet < 0 Then<br />
Throw New Exception(Err.LastDllError & " unable to get DocumentProperties #2")<br />
Return False<br />
End If<br />
<br />
'get the structure from the pointer<br />
Dim dmIn As New DEVMODE<br />
dmIn = Marshal.PtrToStructure(hdmIn, dmIn.GetType)<br />
<br />
'modify the structure with the settings from the source printer<br />
With dmIn<br />
.dmCollate = dmOut.dmCollate<br />
.dmColor = dmOut.dmColor<br />
.dmCopies = dmOut.dmCopies<br />
.dmDefaultSource = dmOut.dmDefaultSource<br />
.dmDuplex = dmOut.dmDuplex<br />
.dmFormName = dmOut.dmFormName<br />
.dmMediaType = dmOut.dmMediaType<br />
.dmOrientation = dmOut.dmOrientation<br />
.dmPaperLength = dmOut.dmPaperLength<br />
.dmPaperSize = dmOut.dmPaperSize<br />
.dmPaperWidth = dmOut.dmPaperWidth<br />
.dmPrintQuality = dmOut.dmPrintQuality<br />
.dmScale = dmOut.dmScale<br />
.dmSize = dmOut.dmSize<br />
.dmTTOption = dmOut.dmTTOption<br />
End With<br />
<br />
'copy the structure back in the pointer<br />
Marshal.StructureToPtr(dmIn, hdmIn, False)<br />
<br />
'set the new settings on the destination printer<br />
intRet = DocumentProperties(IntPtr.Zero, hDestination, strFullPrinterPath, hdmIn, hdmIn, DocumentPropertiesModes.DM_IN_BUFFER Or DocumentPropertiesModes.DM_OUT_BUFFER)<br />
If intRet < 0 Then<br />
Throw New Exception(Err.LastDllError & " unable to set DocumentProperties #1")<br />
Return False<br />
End If<br />
<br />
'reget the PRINTER_INFO_2 structure from the destination printer<br />
Dim PI2In As New PRINTER_INFO_2<br />
'Dim hPI2In As IntPtr<br />
BytesWritten = 0<br />
ptBuf = Marshal.AllocHGlobal(1)<br />
If Not GetPrinter(hDestination, 2, ptBuf, 1, BytesWritten) Then<br />
If BytesWritten > 0 Then<br />
Marshal.FreeHGlobal(ptBuf)<br />
ptBuf = Marshal.AllocHGlobal(BytesWritten)<br />
'reget the PRINTER_INFO_2 structure<br />
If GetPrinter(hDestination, 2, ptBuf, BytesWritten, BytesWritten) Then<br />
Marshal.PtrToStructure(ptBuf, PI2In)<br />
PI2In.lpDeviceMode = hdmIn<br />
'hPI2In = Marshal.AllocHGlobal(Marshal.SizeOf(PI2In))<br />
'Marshal.StructureToPtr(PI2In, hPI2In, False)<br />
intRet = SetPrinter(hDestination, 2, PI2In, PrinterControlCommands.PRINTER_CONTROL_SETPRINTERINFO)<br />
Debug.Print(Err.LastDllError)<br />
If intRet = 0 Then<br />
Throw New Exception(Err.LastDllError & " unable to SetPrinter #1")<br />
Return False<br />
End If<br />
Else<br />
Marshal.FreeHGlobal(ptBuf)<br />
ClosePrinter(hDestination)<br />
Throw New Exception(Err.LastDllError & " unable to GetPrinter #3 " & strFullPrinterPath)<br />
Return False<br />
End If<br />
Else<br />
Throw New Exception(Err.LastDllError & " BytesWritten #2 " & BytesWritten)<br />
Return False<br />
End If<br />
End If<br />
Call ClosePrinter(hDestination)<br />
Marshal.FreeHGlobal(hdmIn)<br />
Dim lvItem As New ListViewItem<br />
lvItem = lvDestination.Items.Add(sPrinter)<br />
lvItem.SubItems.Add(PI2In.pDriverName)<br />
lvItem.SubItems.Add(PI2In.pShareName)<br />
lvDestination.Refresh()<br />
Me.Refresh()<br />
pi2 = Nothing<br />
PI2In = Nothing<br />
dmIn = Nothing<br />
dmOut = Nothing<br />
Return True<br />
End Function
|
|
|
|
|
can someone help me..
how can you make a report using crystal report and the source is from the datagridview.. i need to have a printable copy of the data in the datagridview..
pls help...
gt
|
|
|
|
|
can pls someone help me how to save all items in a listview to the database....
pls help...
gt
|
|
|
|
|
Pretty vague question you can reply being more specific. The vague answer is to iterate through the items in the listview, and insert them into your DB item by item
I get all the news I need from the weather report - Paul Simon (from "The Only Living Boy in New York")
|
|
|
|
|
I want retive system of time.how to get it?
thank you
|
|
|
|
|
I googled "vb.net get time"
Here is the what I found on the third line:
<br />
Dim Now AsDateTime = DateTime.Now<br />
MessageBox.Show(Now)<br />
You always pass failure on the way to success.
|
|
|
|
|
|
Hm... I don't want to appear impolite but how about googling it?
Oh - and you're welcome
You always pass failure on the way to success.
|
|
|
|
|
|
Then ignore the date part.
|
|
|
|
|
Hi,
Is it possible to print a Windows Form? I have a form that needs to be printed. I am not dealing with data source, but values objects. I am using VB .NET 2005. If a form cannot be printed, then what best approach is possible to give some results to print. Their is no Data Source. Just display values from objects, prepare a descent form and print it.
Any help is highly appreciated.
Thanks
Trupti
Thanks
Terry
|
|
|
|
|
|
Hello Trupti,
Printing in Windows Forms consists primarily of using the PrintDocument Component (Windows Forms) component to enable the user to print, and the PrintPreviewDialog Control (Windows Forms) control, PrintDialog Component (Windows Forms) and PageSetupDialog Component (Windows Forms) components to provide a familiar graphical interface to users accustomed to the Windows operating system.
Typically, you create a new instance of the PrintDocument component, set the properties that describe what to print using the PrinterSettings and PageSettings classes, and call the Print method to actually print the document.
During the course of printing from a Windows-based application, the PrintDocument component will show an abort print dialog box to alert users to the fact that printing is occurring and to allow the print job to be canceled.
The foundation of printing in Windows Forms is the PrintDocument component—more specifically, the PrintPage event. By writing code to handle the PrintPage event, you can specify what to print and how to print it.
To create a print job:
1. Add a PrintDocument component to your form.
2. Write code to handle the PrintPage event.
You will have to code your own printing logic. Additionally, you will have to specify the material to be printed.
In the following code example, a sample graphic in the shape of a red rectangle is created in the PrintPage event handler to act as material to be printed.
Visual Basic Copy Code
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.FillRectangle(Brushes.Red, New Rectangle(500, 500, 500, 500))
End Sub
C# Copy Code
private void printDocument1_PrintPage(object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.FillRectangle(Brushes.Red,
new Rectangle(500, 500, 500, 500));
}
J# Copy Code
private void printDocument1_PrintPage(Object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
e.get_Graphics().FillRectangle(Brushes.get_Red(),
new Rectangle(500, 500, 500, 500));
}
C++ Copy Code
private:
void printDocument1_PrintPage(System::Object ^ sender,
System::Drawing::Printing::PrintPageEventArgs ^ e)
{
e->Graphics->FillRectangle(Brushes::Red,
Rectangle(500, 500, 500, 500));
}
(Visual C#, Visual J# and Visual C++) Place the following code in the form's constructor to register the event handler.
C# Copy Code
this.printDocument1.PrintPage += new
System.Drawing.Printing.PrintPageEventHandler
(this.printDocument1_PrintPage);
J# Copy Code
this.printDocument1.add_PrintPage(new
System.Drawing.Printing.PrintPageEventHandler
(this.printDocument1_PrintPage));
C++ Copy Code
printDocument1->PrintPage += gcnew
System::Drawing::Printing::PrintPageEventHandler
(this, &Form1::printDocument1_PrintPage);
You may also want to write code for the BeginPrint and EndPrint events, perhaps including an integer representing the total number of pages to print that is decremented as each page prints.
Note
You can add a PrintDialog component to your form to provide a clean and efficient user interface (UI) to your users. Setting the Document property of the PrintDialog component enables you to set properties related to the print document you are working with on your form. For more information about the PrintDialog component, see PrintDialog Component (Windows Forms).
I hope this helps.
Have a nice day.
Regards,
James Smith
James Smith
www.componentone.com
|
|
|
|
|
|
Hello,
I want to show all figures in form of 2 or 1 decimal places respectively. I have a form, where I have several text boxes. I use NumberFormatInfo to set the decimal places accordingly.
<br />
Private nfi As New System.Globalization.NumberFormatInfo<br />
nfi.NumberDecimalDigits = 2<br />
<br />
'NOT WORKING. SOWS A PURE DOUBLE NUMBER<br />
s = absentAmt.ToString(nfi)<br />
absentAmt = Double.Parse(s.Trim())<br />
<br />
' Calculate UFI WORKING PERFECTLY FINE<br />
uif = ((Me.salary * 1) / 100)<br />
Me.uifTB.Text = uif.ToString(nfi)<br />
uif = Double.Parse(Me.uifTB.Text().Trim())<br />
<br />
' AMOUNT DEDUCTED 'NOT WORKING. SOWS A PURE DOUBLE NUMBER<br />
Me.totalDeduct = (Me.loanRepay + Me.absentAmt + uif)<br />
Me.amtDedTB.Text = Me.totalDeduct.ToString(nfi)<br />
Me.totalDeduct = Double.Parse(Me.amtDedTB.Text.Trim())<br />
<br />
<br />
'TOTAL AMOUNT TO PAY ' DUE TO totalDeduct, this is also not working<br />
Me.totalToPay = (totalInc - totalDeduct)<br />
Me.totalAmtTB.Text = Me.totalToPay.ToString(nfi)<br />
Me.totalToPay = Double.Parse(Me.totalAmtTB.Text.Trim())<br />
<br />
The main problem I believe is coming with absentAmt. If absentAmount is 0, then deducted is fine & hence is total to pay. Otherwise, I get a big no. I have used the same technique & logic, still why is it showing weird with absentAmount.
Can anyone help me figuire out the problem. Any help is appreciated.
Thanks
Thanks
Terry
|
|
|
|
|
It doesn't work that way. NumberFormatInfo applies to format specifiers, not the default format to show any number without a specifier. Do this:
MyTextBox.Text = myDouble.ToString("N4")
Trupti Mehta wrote: ' Calculate UFI WORKING PERFECTLY FINE
uif = ((Me.salary * 1) / 100)
Me.uifTB.Text = uif.ToString(nfi)
uif = Double.Parse(Me.uifTB.Text().Trim())
Please tell me you're not serisously using this to trim a number down to however many decimal places? Are you??
|
|
|
|
|
Dave Kreskowiak wrote: Please tell me you're not serisously using this to trim a number down to however many decimal places? Are you??
Dave, I want to show and save all doubles with just 2 decimal values. That's it. To achieve the goal, I found NumberFormatInfo.DecimalNumber function, that can do the work.
Thanks
Terry
|
|
|
|
|
Trupti Mehta wrote: I found NumberFormatInfo.DecimalNumber function
That's not a function, it's a property of a NumberFormatInfo object, which is part of a culture.
If you want to believe that this will do the job for you, go right ahead and have fun. It's doesn't work the way you think it does.
If you were one of my coders and I saw you rounding a number using this method, I'd probably ask you what youwere thinking, and then fire you. Converting a number to a string, trimming it, then reparsing the numebr?? You honestly can't think of a purely mathematical solution to do this??
|
|
|
|
|
hi there
i m working on this application which involves drawing a line from point A to point B. After the line is drawn i trigger an event and the line has to be redrawn again but this time it should be half the length of the original line and should replace the original line.
At the moment i can draw both the lines but i dont know how to get rid of the original line.
Any ideas/code on how i can go about to solve this problem?
regards
Yasin
|
|
|
|
|
Hello Yasin,
You may draw a line of the length of original line with the Form color which will make original line invisible, then draw second line which is of the half size.
Following is small code snippet which shows this behavior-
--------------------Code Start----------------
Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red)
Dim formGraphics As System.Drawing.Graphics
formGraphics = Me.CreateGraphics()
formGraphics.DrawLine(myPen, 0, 0, 200, 200)
Dim myPen1 As New System.Drawing.Pen(Me.DefaultBackColor)
formGraphics.DrawLine(myPen1, 0, 0, 200, 200)
formGraphics.DrawLine(Pens.Black, 0, 0, 100, 100)
myPen.Dispose()
myPen1.Dispose()
formGraphics.Dispose()
--------------Code End----------------------
I hope this helps .
-Dave.
Dave Traister,
ComponentOne LLC.
www.componentone.com
|
|
|
|
|
it's easyer to use
formgraphics.Clear(me.BackColor)
be carefull tho it will remove all drawings so if you have anything else drawn to the form they will be removed too
If my help was helpfull let me know, if not let me know why.
The only way we learn is by making mistaks.
|
|
|
|
|
Hi All,
I wanna check for (private,Pvt,(P)) using regular expression in vb.net
and compare two names as ABC private Ltd and A B C pvt Limited
)
Thanks and Regards,
Ahmad
|
|
|
|
|
You might want to check out Expresso[^]. It's a very good regular expression writer/tester.
|
|
|
|
|
How can I read the text file from different position say from position 03(column 1), position 04 to 19 (column2) ..and so on. till the length of record.Then how can I get the values and write the values in csv format?.Please Help out.
C.Sridevi
|
|
|
|
|