You may want to allow users to send you back feedback. You can either send it directly to your site via sockets or send the user to your website. What if you don’t have a website? No feedback? Yeah, right. Just have them send it to you by e-mail.
You can not send spaces in URLs, you have to convert them first. Example: if the subject were to be ‘Bug Report!’ then you should put %20 instead of the space character – ‘Bug%20Report!’. %20 is the ASCII value for space.
In this example MemoBugText is the memo in which the user describes the bug, ‘bugreports@youremail.com’ is your e-mail address and ‘Bug Report’ is the subject of that e-mail.
// For more information on ShellExecute() check out our tip
// "How to run programs and execute documents, mailto links and URLs" in the Windows category
ShellExecute(0, 'open', PChar('mailto:bugreports@youremail.com?subject=Bug%20Report&Body=' + MemoBugText.Text), nil, nil, SW_SHOWNORMAL);
Categories: Internet / LAN Tags: ascii value, br, bug report, e mail address, lt, mail client, mailto, nil, send e mail, send you back, shellexecute, sockets, space character, spaces, sw, tips windows, urls, yeah right
You shouldn’t have too much problem opening a Delphi 4 form in Delphi 2 but you won’t have luck opening a 32 bit or C++ Builder form in Delphi 1. The only way is to save the file in text form. Delphi 5 can do this automatically but in all the previous versions you have to do this all by yourself, form by form.
This is a full featured program that will do all the work for you. The source is dumped into Public Domain.
(* DfmToTxt 1.0
**
** Author: Jacob Dybala (m3Rlin). Public Domain
** <m3rlin@programmer.net>
**
** Created : January 2 2000
** Modified: April 12 2000
*)
program DfmToTxt;
{$apptype console} { Generate console application }
{$debuginfo off}
{$localsymbols off}
{$optimizations on}
{$rangechecks off}
uses
Classes, SysUtils;
var
sNewFileName: string;
strInput, strOutput: TStream;
begin
{ Initialize streams }
strInput := nil;
strOutput := nil;
{ Get commandline parameters }
if (ParamCount > 2) or (ParamCount = 0) then begin
WriteLn('DfmToTxt 1.0');
WriteLn('By Jacob Dybala (m3Rlin). Public Domain.');
WriteLn;
WriteLn('Usage: DfmToTxt <input /> <output></output>');
Exit;
end else if not FileExists(ParamStr(1)) then begin
WriteLn(Format('Error: %s can not be found.', [sNewFileName]));
Exit;
end if ExtractFileExt(ParamStr(1) <> '.dfm') then begin
WriteLn('Error: Input file must be a .dfm (Delphi Form) file');
Exit;
end;
if ParamCount = 1 then begin
sNewFileName := ParamStr(1);
sNewFileName := ChangeFileExt(sNewFileName, '.txt');
end else begin
sNewFileName := ParamStr(2);
if FileExists(sNewFileName) then begin
WriteLn(Format('Error: A file named %s already exists.', [sNewFileName]));
Exit;
end;
end;
{ Main code }
try
try
strInput := TFileStream.Create(ParamStr(1), fmOpenRead);
strOutput := TFileStream.Create(sNewFileName, fmCreate);
expect
Write('Error: Failed creating ');
WriteLn(sNewFileName);
Exit;
end;
ObjectResourceToText(strInput, strOutput);
finally
strInput.Free;
strOutput.Free;
end;
end;
Categories: General Tags: binary, borland, commandline parameters, convert, convertion, Delphi, delphi 1, delphi 2, delphi 4, delphi 5, dfm, faq, fileexists, form, format error, jacob dybala, Kylix, nil, old version, public domain, save as, text, tip, trick, window, write error