![]() |
Was ist bei dieser function die eine Tsrtings verarb. falsch
Hallo,
ich bekomme bei dieser unteren Funktion immer die Fehlermeldung "Abstrakter Fehler".... Kann mir hier jemand helfen? Diese Function löscht alle Leerteichen und Leerzeilen die nicht dazugehören...
Delphi-Quellcode:
Function Tform1.Formatcode(Codesource:Tstrings):Tstrings;
Var liste, code:Tstrings; i:integer; begin i:=0; liste:=Tstrings.Create; code:=Tstrings.Create; for i:=0 to Codesource.Count-1 do begin if trim(codesource[i])<>'' then begin code.Add(codesource[i]) end; end; for i:=0 to code.count-1 do begin Liste.Add(trim(code[i])); end; Result:=Liste; end; Danke für eure Hilfe! Gruß Andy |
Re: Was ist bei dieser function die eine Tsrtings verarb. fa
|
Re: Was ist bei dieser function die eine Tsrtings verarb. fa
TStrings ist eine abstrakte Klasse, eine implementierende Subklasse wäre z.B. TStringList
Delphi-Quellcode:
Function Tform1.Formatcode(Codesource:Tstrings):Tstrings;
Var liste, code:Tstrings; i:integer; begin i:=0; liste:=TStringList.Create; |
Re: Was ist bei dieser function die eine Tsrtings verarb. fa
Moin Andy,
ausserdem ist es immer sehr ungünstig ein Objekt als Rückgabewert einer Funktion zu verwenden, da man sich leicht ein Speicherleck einhandeln kann, da man leicht die Übersicht verlieren kann, wer wann das Objekt freigeben darf/muss. |
Re: Was ist bei dieser function die eine Tsrtings verarb. fa
Zitat:
Gruß Hawkeye |
Re: Was ist bei dieser function die eine Tsrtings verarb. fa
Zitat:
so in der art müsste das gehen (ist pseydocode, also bitte noch anpassen). man kann doch direkt mir der liste arbeiten, anstatt weitere anzulegen, da die liste ja ein pointer ist und kein wert (steichwort "call by value" und "call by reference")
Delphi-Quellcode:
procedure Tform1.Formatcode(Codesource:Tstrings);
Var i:integer; begin i:=Codesource.Count-1; while i > -1 do begin if Trim(codesource[i]) ='' then codesource.Delete(i) else codesource[i] := stringreplace(codesource[i], ' ', '',[replaceall]); Dec(i); end; end; |
Re: Was ist bei dieser function die eine Tsrtings verarb. fa
Hallo,
danke für die vielen Antworten! Ich habe nun den Code umstrukturiert und wollte diesen noch veröffentlichen..... Vielleicht braucht Ihn irgendwer mal:
Delphi-Quellcode:
procedure Formatcode(Codesource:Tstrings); Var i:integer; begin i:=Codesource.Count-1; while i > -1 do begin if Trim(codesource[i]) ='' then codesource.Delete(i) else begin Codesource.Insert(i,trim(codesource[i])); Codesource.Delete(i+1); end; Dec(i); end; end; Gruß Andy |
Re: Was ist bei dieser function die eine Tsrtings verarb. fa
Delphi-Quellcode:
kannst du dir doch sparen indem du wie von mir vorher angesprochen direkt den string bearbeitest
Codesource.Insert(i,trim(codesource[i]));
Codesource.Delete(i+1); per
Delphi-Quellcode:
wozu also die liste expandieren?
codesource[i] := trim(codesource[i])
wobei noch anzumerken wäre, dass du in deinem ersten beitrag gesagt hast, dass du alle leerzeichen entfernen möchtest.... dann wäre nämlich
Delphi-Quellcode:
ideal.
codesource[i] := stringreplace(codesource[i], ' ', '',[replaceall]);
also: nächstes mal ein bissl genauer ausdrücken :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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