![]() |
Delphi-Version: 5
EStringListError Hilfe
Hallo, ich bräuchte eure Hilfe.
Bei diesem Quellcode, kommt dieser ![]()
Code:
Mit freundlichen Grüßen,
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Ed_EIN: TEdit; Ed_AUS: TEdit; Btn_Start: TButton; procedure Btn_StartClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; nr1, nr2, nr3, translated2:string; a,b,i2,AktuelleZahl, Stelle1, Stelle2, Stelle3: integer; Bloecke: TStringList; nummern: TStringList; translated: TStringList; implementation {$R *.dfm} procedure Zerlegen; begin Bloecke:=TStringList.Create; Bloecke.Clear; Repeat begin b:=a mod 1000; a:=(a-b)div 1000; Bloecke.Add(inttostr(b)); end; until a=0; end; procedure benenne; begin if aktuellezahl>99 then begin Stelle1:=(aktuellezahl - (aktuellezahl mod 100)) div 100; end else begin Stelle1:=0; end; if aktuellezahl mod 10 > 0 then begin stelle3:= aktuellezahl mod 10; end else begin stelle3:= 0; end; if aktuellezahl - (aktuellezahl - (aktuellezahl mod 100))>9 then begin Stelle2:=((aktuellezahl -(stelle3)-(stelle1 *100)) div 10); end else begin stelle2:=0; end; end; procedure translate; begin nummern:= TstringList.Create; nummern.Add('ein'); nummern.Add('eins'); nummern.Add('zwei'); nummern.Add('drei'); nummern.Add('vier'); nummern.Add('fuenf'); nummern.Add('sechs'); nummern.Add('sieben'); nummern.Add('acht'); nummern.Add('neun'); nummern.Add('zehn'); nummern.Add('zwanzig'); //11// nummern.Add('dreissig'); nummern.Add('vierzig'); nummern.Add('fuenfzig'); nummern.Add('sechzig'); nummern.Add('siebzig'); nummern.Add('achzig'); nummern.Add('neunzig'); //18// nummern.Add('elf'); nummern.Add('zwoelf'); nummern.Add('und'); if stelle1 <> 0 then begin if stelle1=1 then begin nr1:=nummern [0]; end else begin nr1:=nummern [stelle1]; end; end; if stelle2 > 1 then begin nr2:=nummern [Stelle2 +9]; end else begin if stelle2 = 1 then begin if stelle3 = 1 then begin nr2:=nummern[19]; //elf// stelle3:=0 //dritte stelle faellt weg// end; if stelle3 = 2 then begin nr2:=nummern[20]; //zwoelf// stelle3:=0 //s. Oben// end else begin nr2:=nummern[10]; end; end; end; if stelle3 > 1 then begin nr3:=nummern[stelle3]; end else begin if stelle3 = 1 then begin nr3:= nummern[0] end; end; end; procedure erweitere; begin translated:=TstringList.Create; if (stelle1 = 0) or (stelle2 = 0) or (stelle3 = 0) then begin if (stelle1 = 0) and (stelle2 = 0) and (stelle3 = 0) then begin translated2:='a'; end else begin if ((stelle1=0) and (stelle2=0)) or ((stelle1=0) and (stelle3=0)) or ((stelle2=0) and (stelle3=0)) then begin if (stelle1=0) and (stelle2=0) then begin translated2:=nr3; end; if (stelle1=0) and (stelle3=0) then begin translated2:=nr2; end; if (stelle2=0) and (stelle3=0) then begin translated2:=nr1; end; end else begin if stelle1=0 then begin translated2:=nr3 + 'und' + nr2; end; if stelle2=0 then begin translated2:=nr1 + nr3; end; if stelle3=0 then begin translated2:=nr1 + nr2; end; end; end; end else begin translated2:=nr1 + nr3 + 'und' + nr2; end; translated.Add(translated2); end; procedure mach_mathe; var i:Integer; begin Zerlegen; i2:=Bloecke.Count; for i:=0 to bloecke.Count do begin aktuellezahl:=strtoint(Bloecke[i2]); benenne; translate; erweitere; i2:=i2 -1; Bloecke.Free; nummern.Free; translated.Free; end; end; procedure TForm1.Btn_StartClick(Sender: TObject); begin a:=strtoint(Ed_EIN.Text); mach_mathe; //Ed_Aus.Text:=inttostr(i);// end; end. Alex |
AW: EStringListError Hilfe
Hallo,
Delphi-Quellcode:
Gruß
procedure mach_mathe;
var i:Integer; begin Zerlegen; i2:=Bloecke.Count; // Count gibt Dir die Anzahl der Einträge in der Stringliste, also 0..N for i:=0 to bloecke.Count do begin aktuellezahl:=strtoint(Bloecke[i2]); // Der Index einer Stringliste liegt immer zwischen 0 und Count - 1 benenne; translate; erweitere; i2:=i2 -1; Bloecke.Free; nummern.Free; translated.Free; end; end; |
AW: EStringListError Hilfe
Bloecke.Free innerhalb der Schleife ist auch ganz groß.
Und, was erzeugt wird, muß auch wieder freigegeben werden. Und Verwende zum löschen einer Stringlist die Methode Clear; Und, und, und..
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Bloecke:= TStringList.Create; nummern:= TStringList.Create; translated:= TStringList.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin Bloecke.Free; nummern.Free; translated.Free; end; |
AW: EStringListError Hilfe
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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-2025 by Thomas Breitkreuz