![]() |
Komponente entwickelt aber nicht sichtbar..?!
Hallo,
also habe jetzt mal Version 0.1 Beta meine Kompo soweit fertig... doch jetzt der Schock... Wenn ich sie auf Form ziehen will wird sie nicht angezeigt... außerdem heißt es nach dem 2. Versuch, dass der Arbeitsspeicher voll ist....???
Delphi-Quellcode:
Bitte schaut es Euch mal durch .... ich weiß dass das Ding nicht perfekt ist aber ich will jetzt mal für den Anfang nur dass es funct...
unit Stringverwaltung;
interface uses SysUtils, Classes, Dialogs; type TStringVarverwaltung = class(TComponent) private { Private-Deklarationen } cFehler:Boolean; type TVariable = record Name:String; Programm:String; Inhalt:String; Free:Boolean; end; var Variablen: array [1..9999999] of TVariable; function GetFree():integer; protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create (AOwner : TComponent) ; override ; published { Published-Deklarationen } property Fehlermeldungen : Boolean read CFehler write CFehler; public Procedure NewVar(Name,Programm,Inhalt:String); public Procedure DelVar(Name,Programm:String); public Procedure DelVarbyProg(Programm:String); public Function GetInhalt(Name,Programm:String):String; end; procedure Register; implementation procedure Register; begin RegisterComponents('BlueRain', [TStringVarverwaltung]); end; constructor TStringVarverwaltung.Create(AOwner : TComponent); var i:integer; begin for i := 1 to 9999999 do begin Variablen[i].Free:=True; end; end; Function TStringVarverwaltung.GetInhalt(Name,Programm:String):String; var i:integer; begin for i := 1 to 9999999 do begin if (Variablen[i].Name=Name) and (Variablen[i].Programm=Programm) then begin Result:=Variablen[i].Inhalt; end; end; end; function TStringVarverwaltung.GetFree():integer; var i, ergebnis:integer; begin Ergebnis:=-1; for I := 1 to 9999999 do begin if Variablen[i].Free=true then begin ergebnis:=i; break; end; end; if ergebnis=-1 then begin if cFehler=true then Messagedlg('Speicherüberlauf bei 9999999+1 -TStringVarVerwaltung-',mterror,[mbok],0); end; Result:=Ergebnis; end; Procedure TStringVarVerwaltung.DelVarbyProg(Programm:String); var i:integer; begin for i := 1 to 9999999 do begin if Variablen[i].Programm=Programm then begin Variablen[i].Name:=''; Variablen[i].Programm:=''; Variablen[i].Inhalt:=''; Variablen[i].Free:=true; end; end; end; Procedure TStringVarVerwaltung.DelVar(Name,Programm:String); var i:integer; begin for i := 1 to 9999999 do begin if (Variablen[i].Name=Name) and (Variablen[i].Programm=Programm) then begin Variablen[i].Name:=''; Variablen[i].Programm:=''; Variablen[i].Inhalt:=''; Variablen[i].Free:=true; end; end; end; Procedure TStringVarverwaltung.NewVar(Name,Programm,Inhalt:String); var index:integer; begin index:=Getfree(); Variablen[index].Name:=Name; Variablen[index].Programm:=Programm; Variablen[index].Inhalt:=Inhalt; Variablen[index].Free:=False; end; end. Danke! |
Re: Komponente entwickelt aber nicht sichtbar..?!
var Variablen: array [1..9999999] of TVariable;
Und du weißt nicht warum der Arbeitsspeicher voll wird? |
Re: Komponente entwickelt aber nicht sichtbar..?!
Wieso nimmst du keine dynamischen Arrays?
|
Re: Komponente entwickelt aber nicht sichtbar..?!
Hallo,
ja ich weiß, dass das nicht sauber ist.... aber es muss ja an was anderem Liegen.... das nimmt sicherlich keine 4 GB in Anspruch.. oder? Trotzdem Danke! Gruß Andy |
Re: Komponente entwickelt aber nicht sichtbar..?!
Hallo Andy,
wenn man einen constructor überschreibt, sollte man auch den geerbten constructor aufrufen. Gruß Hawkeye |
Re: Komponente entwickelt aber nicht sichtbar..?!
Hallo,
sorry du ist meine erste Kompo und kenne mich da nicht aus wie macht man da was? Danke! |
Re: Komponente entwickelt aber nicht sichtbar..?!
MeinName Create;
Und rate mal was mein Name ist ;) <- siehe da |
Re: Komponente entwickelt aber nicht sichtbar..?!
Zitat:
Zitat:
Übrigens kann ein Programm unter Windows nur 2 GB belegen |
Re: Komponente entwickelt aber nicht sichtbar..?!
Hallo,
also gut werde den Array noch dynamisch machen... Danke ;-) Also das hier geht net:
Delphi-Quellcode:
Danke für Eure Hilfe!
constructor TStringVarverwaltung.Create(AOwner : TComponent);
var i:integer; begin inherited Create; //[DCC Fehler] Stringverwaltung.pas(51): E2035 Nicht genügend wirkliche Parameter for i := 1 to 9999999 do begin Variablen[i].Free:=True; end; end; |
Re: Komponente entwickelt aber nicht sichtbar..?!
Delphi-Quellcode:
Warum erzeugst du im Konstruktor schon wieder eine so rrsinnig große Menge an Elementen anstatt zur Laufzeit so viele wie nötig zu erzeugen? das ist doch der Vorteil der dynamsichen Variante.
inherited Create( AOwner);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz