1
0
mirror of https://github.com/moparisthebest/Simba synced 2024-11-25 10:42:20 -05:00

added the .lrs, my bad.

git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@408 3f818213-9676-44b0-a9b4-5e4c4e03d09d
This commit is contained in:
Nava2 2010-01-13 19:11:42 +00:00
parent d92139acc9
commit d1757e8512
2 changed files with 125 additions and 78 deletions

View File

@ -0,0 +1,43 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFormReportBug','FORMDATA',[
'TPF0'#14'TFormReportBug'#13'FormReportBug'#4'Left'#3'3'#2#6'Height'#3#144#1#3
+'Top'#3#164#0#5'Width'#3'X'#2#13'ActiveControl'#7#11'MemoSummary'#7'Caption'
+#6#12'Report a Bug'#12'ClientHeight'#3#144#1#11'ClientWidth'#3'X'#2#10'LCLVe'
+'rsion'#6#6'0.9.29'#0#7'TButton'#12'ButtonReport'#4'Left'#2#16#6'Height'#2#25
+#3'Top'#3'p'#1#5'Width'#2'K'#7'Caption'#6#6'Report'#7'OnClick'#7#17'ButtonRe'
+'portClick'#8'TabOrder'#2#0#0#0#5'TMemo'#15'MemoDescription'#4'Left'#2#9#6'H'
+'eight'#3#168#0#3'Top'#3#192#0#5'Width'#3','#1#8'TabOrder'#2#1#0#0#6'TLabel'
+#10'LabelTitle'#4'Left'#2#10#6'Height'#2#20#3'Top'#2#12#5'Width'#2'i'#7'Capt'
+'ion'#6#12'Report a Bug'#11'Font.Height'#2#239#9'Font.Name'#6#4'Sans'#11'Par'
+'entColor'#8#10'ParentFont'#8#0#0#9'TGroupBox'#18'GroupBoxReportData'#4'Left'
+#3'H'#1#6'Height'#3'>'#1#3'Top'#2'*'#5'Width'#3#8#1#7'Caption'#6#11'Report D'
+'ata'#12'ClientHeight'#3'+'#1#11'ClientWidth'#3#4#1#8'TabOrder'#2#2#0#9'TCom'
+'boBox'#16'ComboBoxCategory'#4'Left'#2#9#6'Height'#2#29#3'Top'#2#21#5'Width'
+#3#237#0#10'ItemHeight'#2#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#15'Select'
+' Category'#6#7'Bitmaps'#6#17'Client-Image Core'#6#15'Code Completion'#6#14
+'Colour History'#6#13'Colour Picker'#6#18'Colour Recognition'#6#3'DTM'#6#11
+'File System'#6#13'Function List'#6#7'General'#6#3'GUI'#6#6'Input '#6#18'Int'
+'ernet Functions'#6#5'Other'#6#6'Python'#6#16'Scripting Engine'#0#8'TabOrder'
+#2#0#4'Text'#6#15'Select Category'#0#0#9'TComboBox'#23'ComboBoxReproducibili'
+'ty'#4'Left'#2#9#6'Height'#2#29#3'Top'#2']'#5'Width'#3#237#0#10'ItemHeight'#2
+#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#15'Reproducibility'#6#6'Always'#6#9
+'Sometimes'#6#6'Random'#6#14'Have not tried'#6#19'Unable to Reproduce'#6#3'N'
+'/A'#0#8'TabOrder'#2#1#4'Text'#6#15'Reproducibility'#0#0#9'TComboBox'#16'Com'
+'boBoxSeverity'#4'Left'#2#9#6'Height'#2#29#3'Top'#3#173#0#5'Width'#3#237#0#8
+'BidiMode'#7#24'bdRightToLeftReadingOnly'#10'ItemHeight'#2#0#9'ItemIndex'#2#0
+#13'Items.Strings'#1#6#8'Severity'#6#7'Feature'#6#7'Trivial'#6#4'Text'#6#5'T'
+'weak'#6#5'Minor'#6#5'Major'#6#5'Crash'#6#5'Block'#0#14'ParentBidiMode'#8#8
+'TabOrder'#2#2#4'Text'#6#8'Severity'#0#0#9'TComboBox'#16'ComboBoxPriority'#4
+'Left'#2#9#6'Height'#2#29#3'Top'#3#253#0#5'Width'#3#237#0#10'ItemHeight'#2#0
+#9'ItemIndex'#2#0#13'Items.Strings'#1#6#8'Priority'#6#4'None'#6#3'Low'#6#6'N'
+'ormal'#6#4'High'#6#6'Urgent'#6#9'Immediate'#0#8'TabOrder'#2#3#4'Text'#6#8'P'
+'riority'#0#0#0#5'TMemo'#11'MemoSummary'#4'Left'#2#9#6'Height'#2'Y'#3'Top'#2
+'@'#5'Width'#3','#1#8'TabOrder'#2#3#0#0#6'TLabel'#12'LabelSummary'#4'Left'#2
+#10#6'Height'#2#18#3'Top'#2'*'#5'Width'#2'f'#7'Caption'#6#14'Breif Summary:'
+#11'ParentColor'#8#0#0#6'TLabel'#16'LabelDescription'#4'Left'#2#10#6'Height'
+#2#18#3'Top'#3#168#0#5'Width'#2'O'#7'Caption'#6#12'Description:'#11'ParentCo'
+'lor'#8#0#0#7'TButton'#12'ButtonCancel'#4'Left'#3#164#1#6'Height'#2#25#3'Top'
+#3'p'#1#5'Width'#3#171#0#7'Caption'#6#6'Cancel'#7'OnClick'#7#17'ButtonCancel'
+'Click'#8'TabOrder'#2#4#0#0#0
]);

View File

@ -7,11 +7,11 @@ interface
uses uses
Classes, SysUtils; Classes, SysUtils;
const
POSTVARS_VARIABLE = 0;
POSTVARS_VALUE = 1;
type type
TPostVariable = record
variable, value: String;
end;
{ {
Store the internet connection information Store the internet connection information
} }
@ -20,17 +20,19 @@ type
//url of the connection //url of the connection
ConnURL: String; ConnURL: String;
//contains post paramaters and vars //contains post paramaters and vars
PostVars: array [0..1] of TStringArray; PostVars: TList;
PostFreeSpots: array of Integer; PostFreeSpots: array of Integer;
PostVarsLen, PostVarsHigh, FreeSpotsHigh, FreeSpotsLen : integer; PostVarsLen, PostVarsHigh, FreeSpotsHigh, FreeSpotsLen : integer;
private
function createPostVariable(variable, value: String): TPostVariable;
public public
constructor Create(URL: String); constructor Create(URL: String);
destructor Destroy; override; destructor Destroy; override;
//POST variable functions for PHP transmission //POST variable functions for PHP transmission
procedure PostVariableAdd(theVar, theValue: String); procedure AddPostVariable(theVar, theValue: String);
procedure PostVariableDel(theVar: String); procedure DelPostVariable(theVar: String);
procedure PostVariableReplace(searchVar, replaceVar, value: String); procedure ReplacePostVariable(searchVar, replaceVar, value: String);
function PostHTTP: Boolean; function PostHTTP(out dataStream: TStream): Boolean;
end; end;
@ -39,6 +41,7 @@ type
TInternetArray = class(TObject) TInternetArray = class(TObject)
protected protected
FreeSpots: array of Integer; FreeSpots: array of Integer;
ConnList : TList;
ConnArray: array of TInternetConnection; ConnArray: array of TInternetConnection;
ConnHigh, FreeSpotsHigh, FreeSpotsLen : integer; ConnHigh, FreeSpotsHigh, FreeSpotsLen : integer;
@ -47,10 +50,10 @@ type
function ConnectionClose(ConnInd: Integer): Boolean; function ConnectionClose(ConnInd: Integer): Boolean;
destructor Destroy; override; destructor Destroy; override;
//POST variable functions for PHP transmission //POST variable functions for PHP transmission
procedure PostVariableAdd(connInd: Integer; theVar, theValue: String); procedure AddPostVariable(connInd: Integer; theVar, theValue: String);
procedure PostVariableDel(connInd: Integer; theVar: String); procedure DelPostVariable(connInd: Integer; theVar: String);
procedure PostVariableReplace(connInd: Integer; searchVar, replaceVar, value: String); procedure ReplacePostVariable(connInd: Integer; searchVar, replaceVar, value: String);
function PostHTTP(connInd: Integer): Boolean; function PostHTTP(connInd: Integer; out dataStream: TStream): Boolean;
end; end;
function GetPage(URL: String): String; function GetPage(URL: String): String;
@ -78,6 +81,7 @@ procedure TInternetConnection.Create(URL: String);
begin begin
inherited; inherited;
Self.ConnURL := URL; Self.ConnURL := URL;
Self.PostVars.Create;
end; end;
procedure TInternetConnection.Destroy; overload; procedure TInternetConnection.Destroy; overload;
@ -85,26 +89,24 @@ begin
inherited; inherited;
// ADD CLOSING OF CONNECTION // ADD CLOSING OF CONNECTION
// is this all necessary? Memory leaks etc trying to avoid them :p // Clear it up
setLength(PostVars[POSTVARS_VARIABLE], PostVars[POSTVARS_VALUE], 0); PostVars.Clear;
setLength(PostFreeSpots, 0);
FreeSpotsHigh := -1;
FreeSpotsLen := 0;
PostVarsHigh := -1;
PostVarsLen := 0;
end; end;
procedure TInternetConnect.PostVariableAdd(theVar, theValue: String); procedure TInternetConnect.AddPostVariable(theVar, theValue: String);
var var
currentIndex: Integer; currentIndex: Integer;
begin begin
theVar := replace(' ', '%20', theVar); // more needs to be done, I only knew the ' ' replace. theVar := replace(' ', '%20', theVar); // more needs to be done, I only knew the ' ' replace.
theValue := replace(' ', '%20', theValue); theValue := replace(' ', '%20', theValue);
with Self do Self.PostVars.Add(createPostVariable(theVar, theValue));
{ with Self do
begin begin
if (FreeSpotsHigh = -1) then if (FreeSpotsHigh = -1) then
begin begin
setLength(PostVars[POSTVARS_VARIABLE], PostVars[POSTVARS_VALUE], PostVarsHigh + 2); setLength(PostVars, PostVarsHigh + 2);
inc(PostVarsHigh); inc(PostVarsHigh);
currentIndex := PostVarsHigh; currentIndex := PostVarsHigh;
end else end else
@ -112,85 +114,79 @@ begin
currentIndex := PostFreeSpots[FreeSpotsHigh]; currentIndex := PostFreeSpots[FreeSpotsHigh];
dec(FreeSpotsHigh); dec(FreeSpotsHigh);
end; end;
PostVars[POSTVARS_VARIABLE][currentIndex] := theVar; PostVars[currentIndex].variable := theVar;
PostVars[POSTVARS_VALUE][currentIndex] := theValue; PostVars[currentIndex].value := theValue;
end;
end; }
end; end;
procedure TInternetConnection.PostVariableDel(theVar: String); procedure TInternetConnection.DelPostVariable(theVar: String);
var var
i: Integer; i: Integer;
tempPostVar: TPostVariable;
begin begin
for i := PostVarHigh downto 0 do for i := (Self.PostVars.Count - 1) downto 0 do
begin begin
if (theVar = Self.PostVars[POSTVARS_VARIABLE][i]) then if (theVar = Self.PostVars.Items[i].variable) then
begin begin
with Self do tempPostVar := PostVars.Items[i];
begin Self.PostVars.Remove(tempPostVar);
PostVars[POSTVARS_VARIABLE][i] := ''; break;
PostVars[POSTVARS_VALUE][i] := '';
if (FreeSpotsHigh = FreeSpotsLen) then
begin
FreeSpotsLen := FreeSpotsLen + 1;
setLength(PostFreeSpots, FreeSpotsLen);
end;
PostFreeSpots[FreeSpotsHigh] := i;
end;
end; end;
end; end;
end; end;
procedure TInternetConnection.PostVariableReplace(searchVar, replaceVar, value: String); procedure TInternetConnection.ReplacePostVariable(searchVar, replaceVar, theValue: String);
var var
i: Integer;; i: Integer;
tempPostVar: TPostVariable;
begin begin
with Self do with Self do
begin begin
for i := PostVarHigh downto 0 do for i := (PostVars.Count - 1) downto 0 do
begin begin
if (searchVar = PostVars[POSTVARS_VARIABLE][i]) then tempPostVar := PostVars.Items[i];
if (searchVar = tempPostVar.variable) then
begin begin
PostVars[POSTVARS_VARIABLE][i] := replaceVar; tempPostVar.variable := replaceVar;
PostVars[POSTVARS_VALUE][i] := value; tempPostVar.value := theValue;
break;
end; end;
end; end;
end; end;
end; end;
function TInternetConnection.PostHTTP: Boolean; function TInternetConnection.PostHTTP(out dataStream: TStream): Boolean;
var var
// holds the vars when they are placed together // holds the vars when they are placed together
URLData: String; URLData: String;
theStream: TStream; tempPostVar: TPostVariable;
begin begin
try try
with Self do with Self do
begin begin
//ADD Connection stuffs //ADD Connection stuffs
for i := PostVarsHigh downto 0 do for i := (PostVars.Count - 1) downto 0 do
begin begin
if (PostVars[POSTVARS_VARIABLE] <> '') then tempPostVar := PostVars.Items[i];
if (tempPostVar.variable <> '') then
begin begin
URLData := URLData + format('%d=%d+', [PostVars[POSTVARS_VARIABLE][i], URLData := URLData + format('%d=%d+', [tempPostVar.variable,
PostVars[POSTVARS_VALUE][i]]); tempPostVar.value]);
end; end;
end; end;
Delete(URLData, Length(URLData) - 1, 1); Delete(URLData, Length(URLData) - 1, 1);
{I DONT KNOW (TStream), this should work since we don't reuse it after.} {I DONT KNOW (TStream), this should work since we don't reuse it after.}
HttpPostURL(ConnURL, URLData, theStream); dataStream := nil;
HttpPostURL(ConnURL, URLData, dataStream);
// Lets remove all Post Variable data so fresh start next time. // Lets remove all Post Variable data so fresh start next time.
setLength(PostVars[POSTVARS_VARIABLE], PostVars[POSTVARS_VALUE], 0); PostVars.Clear;
setLength(PostFreeSpots, 0);
FreeSpotsHigh := -1;
FreeSpotsLen := 0;
PostVarsHigh := -1;
PostVarsLen := 0;
end; end;
except except
raise Exception.createFMT('TInternetConnection.PostHTTP: Something went wrong, could not complete. (%d)', URLData); raise Exception.createFMT('TInternetConnection.PostHTTP: Something went wrong, could not complete. URL: %d', URLData);
exit(false); exit(false);
end; end;
result := true; result := true;
@ -205,19 +201,11 @@ function TInternetArray.ConnectionOpen(URL: String): Integer;
var var
currentIndex: Integer; currentIndex: Integer;
begin begin
with Self do try
begin Result := Self.ConnList.Add(TInternetConnection.Create(URL));
if (FreeSpotsHigh = -1) then except
begin raise Exception.createFMT('TInternetArray.ConnectionClose: Could not close connection %d URL: %d',
setLength(ConnArray, ConnHigh + 2); [theInd, ConnURL]);
inc(ConnHigh);
currentIndex := ConnHigh;
end else
begin
currentIndex := FreeSpots[FreeSpotsHigh];
dec(FreeSpotsHigh);
end;
ConnArray[currentIndex].Create(URL);
end; end;
end; end;
@ -225,8 +213,14 @@ end;
Close the connection, add the index to the FreeSpots. Close the connection, add the index to the FreeSpots.
} }
function TInternetArray.ConnectionClose(theInd: Integer): Boolean; function TInternetArray.ConnectionClose(theInd: Integer): Boolean;
var
tempConn: TInternetConnection;
begin begin
try try
tempConn := Self.ConnList.Items[theInd];
Self.ConnList.Remove(tempConn);
tempConn.Destroy;
{
with Self do with Self do
begin begin
ConnArray[theInd].Destroy; ConnArray[theInd].Destroy;
@ -236,10 +230,10 @@ begin
setLength(FreeSpots, FreeSpotsLen); setLength(FreeSpots, FreeSpotsLen);
end; end;
FreeSpots[FreeSpotsHigh] := theInd; FreeSpots[FreeSpotsHigh] := theInd;
end; end; }
except except
raise Exception.createFMT('TInternetArray.ConnectionClose: Could not close connection %d URL: %d', raise Exception.createFMT('TInternetArray.ConnectionClose: Could not close connection %d URL: %d',
[theInd, ConnArray[theInd].ConnURL]); [theInd, ConnList.Items[theInd].ConnURL]);
exit(false); exit(false);
end; end;
result := True; result := True;
@ -252,7 +246,7 @@ end;
procedure TInternetArray.PostVariableAdd(connInd: Integer; theVar, theValue: String); procedure TInternetArray.PostVariableAdd(connInd: Integer; theVar, theValue: String);
begin begin
try try
result := ConnArray[connInd].PostVariableAdd(theVar, theValue); ConnList.Items[commInd].PostVariableAdd(theVar, theValue);
except except
raise Exception.createFMT('TInternetArray.PostVariableAdd: %d is not in the ConnArray', raise Exception.createFMT('TInternetArray.PostVariableAdd: %d is not in the ConnArray',
[connInd]); [connInd]);
@ -266,7 +260,7 @@ end;
procedure TInternetArray.PostVariableDel(connInd: Integer; theVar: String); procedure TInternetArray.PostVariableDel(connInd: Integer; theVar: String);
begin begin
try try
result := ConnArray[connInd].PostVariableAdd(theVar); ConnList.Items[commInd].PostVariableAdd(theVar);
except except
raise Exception.createFMT('TInternetArray.PostVariableDel: %d is not in the ConnArray', raise Exception.createFMT('TInternetArray.PostVariableDel: %d is not in the ConnArray',
[connInd]); [connInd]);
@ -280,13 +274,23 @@ end;
procedure TInternetArray.PostVariableReplace(connInd: Integer; searchVar, replaceVar, value: String); procedure TInternetArray.PostVariableReplace(connInd: Integer; searchVar, replaceVar, value: String);
begin begin
try try
result := ConnArray[connInd].PostVariableAdd(searchVar, replaceVar, value); ConnList.Items[commInd].PostVariableAdd(searchVar, replaceVar, value);
except except
raise Exception.createFMT('TInternetArray.PostVariableReplace: %d is not in the ConnArray', raise Exception.createFMT('TInternetArray.PostVariableReplace: %d is not in the ConnArray',
[connInd]); [connInd]);
end; end;
end; end;
function TInternetArray.PostHTTP(connInd: Integer; out dataStream: TStream): Boolean;
begin
try
result := ConnList.Items[commInd].PostHTTP(dataStream);
except
raise Exception.createFMT('TInternetArray.PostHTTP: %d is not in the ConnArray',
[connInd]);
end;
end;
{ OTHER } { OTHER }
function GetPage(URL: String): String; function GetPage(URL: String): String;
var var