AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Was ist bei dieser function die eine Tsrtings verarb. falsch
Thema durchsuchen
Ansicht
Themen-Optionen

Was ist bei dieser function die eine Tsrtings verarb. falsch

Ein Thema von Dragon27 · begonnen am 13. Okt 2006 · letzter Beitrag vom 13. Okt 2006
Antwort Antwort
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

Was ist bei dieser function die eine Tsrtings verarb. falsch

  Alt 13. Okt 2006, 17:04
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
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Was ist bei dieser function die eine Tsrtings verarb. fa

  Alt 13. Okt 2006, 17:10
Hallo,
hier gabs das schonmal.
TStringList statt TStrings wird wohl das beste sein.

Viele Grüße
Benjamin
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.852 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Was ist bei dieser function die eine Tsrtings verarb. fa

  Alt 13. Okt 2006, 17:10
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;
Markus Kinzler
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Was ist bei dieser function die eine Tsrtings verarb. fa

  Alt 13. Okt 2006, 17:46
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Was ist bei dieser function die eine Tsrtings verarb. fa

  Alt 13. Okt 2006, 17:56
Zitat von Christian Seehase:
[...]da man sich leicht ein Speicherleck einhandeln kann[...]
Eines ist ja schon drin - die (überflüssige) Liste code wird nicht freigegeben...

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Was ist bei dieser function die eine Tsrtings verarb. fa

  Alt 13. Okt 2006, 18:13
Zitat:
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;
--> ohje mineh. das ist ja ein kauderwelsch.....


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;
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#7

Re: Was ist bei dieser function die eine Tsrtings verarb. fa

  Alt 13. Okt 2006, 18:27
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
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Was ist bei dieser function die eine Tsrtings verarb. fa

  Alt 13. Okt 2006, 18:41
Delphi-Quellcode:
      Codesource.Insert(i,trim(codesource[i]));
      Codesource.Delete(i+1);
kannst du dir doch sparen indem du wie von mir vorher angesprochen direkt den string bearbeitest
per

codesource[i] := trim(codesource[i]) wozu also die liste expandieren?

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
codesource[i] := stringreplace(codesource[i], ' ', '',[replaceall]); ideal.

also: nächstes mal ein bissl genauer ausdrücken
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz