![]() |
STRINGS "kürzen"
Hallo zusammen,
ich wollte letztens nen Programm schreiben, was Namen, die in ein Memo eingetragen werden und nur duch ein Leerzeichen getrennt sind, jeweils in eine neue Zeile packen sollte. Problem is, dass sobald ich mehr ale eine Zeile von Namen benutze, hört das Prgramm niemals auf! Bitte nich meckern, wie ich programmiere, dass weiß ich selber^^
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
VAR INT,n,m:INTEGER; a,b:STRING; begin if checkbox1.checked then exit; checkbox1.checked:=false; a:=''; b:=a; FOR INT:=0 TO memo1.Lines.Count-1 DO BEGIN FOR n:=1 TO length(memo1.Lines[INT]) DO BEGIN if memo1.Lines[INT][n]=' 'THEN BEGIN FOR m:=1 TO n-1 DO a:=a+memo1.Lines[INT][m]; FOR m:=n+1 TO length(memo1.Lines[INT]) DO b:=b+memo1.Lines[INT][m]; memo1.Lines[INT]:=a; memo1.Lines.Add(b); x:=true; break; END; END; end; end; |
Re: STRINGS "kürzen"
sry leute ich hab die falsche kategorie erwischt ich werd das in
Sonstige Fragen zu Delphi nochma posten |
Re: STRINGS "kürzen"
Delphi-Quellcode:
Nicht grad auf Performance und Eleganz, aber sollte tun was du willst - denke ich. Ungetestet hier im Browser getippert.
var
p: Integer; temp: TStringList; begin p := pos(' ', Memo.Text); while p>=0 do begin temp.Lines.Add(copy(Memo.Text, 1, p)); Memo.Text := copy(Memo.Text, p+1, Length(Memo.Text)-p); p := pos(' ', Memo.Text); end; Memo.Text := temp.Text; Edit: Deinen Code hab ich dank des furchtbaren Stils erst garnicht versucht zu verstehen, bzw. den Fehler zu finden. Wenn du weisst, dass es Käse ist, warum änderst du es nicht? |
Re: STRINGS "kürzen"
Zitat:
|
Re: STRINGS "kürzen"
Okay, das sehe ich ein ;)
Generell wird Code, der sich weitestgehend am ![]() |
Re: STRINGS "kürzen"
Hallo SimonRap, sollte auch so gehen.
Delphi-Quellcode:
lg. Astat
memo1.Text := StringReplace(memo1.Text, ' ', #13#10, [rfReplaceAll, rfIgnoreCase]);
|
Re: STRINGS "kürzen"
Und der bewirkt was?
Also wo muss ich den einsetzen? Und wäre so jetzt nur von den Einrückungen der Blöcke besser?:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
Var Zeile,Leer,n:INTEGER; a,b:String; Begin a:=''; b:=a; For Zeile:=0 To memo1.Lines.Count-1 Do Begin For Leer:=1 To length(memo1.Lines[Zeile]) Do Begin if memo1.Lines[Zeile][Leer]=' 'Then begin For n:=1 To Leer-1 Do a:=a+memo1.Lines[Zeile][n]; For n:=Leer+1 To length(memo1.Lines[Zeile]) Do b:=b+memo1.Lines[Zeile][n]; memo1.Lines[Zeile]:=a; memo1.Lines.Add(b); break; End; End; End; End; |
Re: STRINGS "kürzen"
Simon :-D bleibt Cool , alles kommt mit der Zeit.
Ich kenne viele Programmierer die meistens Schrott von sich geben, aber Stil haben Die, keine Frage! :mrgreen: Es ist selbstverständlich, dass ein Anfänger probiert zuerst überhaupt was brauchbares zu programmieren und Stil kommt später. Du brauchst Dich hier deswegen nicht zu rechtfertigen… [delphi] BEGIN Muchacho END. |
Re: STRINGS "kürzen"
Hallo SimonRap,
Delphi-Quellcode:
Sollte so gehen, teste es mal, wen's nich klappt meld Dich einfach wieder, kein Problem, musst dich nur traun :hi: !!procedure TForm1.Button3Click(Sender: TObject); begin memo1.Text := StringReplace(memo1.Text, ' ', #13#10, [rfReplaceAll, rfIgnoreCase]); end; lg. Astat |
Re: STRINGS "kürzen"
Zitat:
ich sitz ne halbe Stunde an nem Programm und es geht net, während du dir mal eben eine Zeile ausdenkst und die funktioniert!!!!!! Naja trotzdem thx, es funktioniert jedenfalls! ![]() ![]() ![]() ![]() |
Sortieren Strings
Nächstes Problem^^:
Hab dem Programm jetzt noch ein Bubblesort verpasst, nur das Problem is, der brauch ewig... Hab das mal mit 1.000 Strings laufen lassen und das wird einfach net fertig! Kann mir jmd das Prinzip eines schnelleren Sortieralgorithmuses und wie es ungefähr funktioniert erkären? |
Re: Sortieren Strings
Zitat:
|
Re: STRINGS "kürzen"
2 Sachen dazu:
1. Für jede Frage einen neuen Thread (nicht zwei neue :mrgreen: ) 2. Suche hier im Forum nach "Sortieren" oder "Sortier Algorithmus" dat wird dich erschlagen und auf jeden fall zufrieden stellen :wink: ps: kann es sein, dass deine tastatur/maus irgendwie ein eigenleben hat :mrgreen: edit: btw. wenn du die in dem memo sortiert haben möchtest, dann schreib doch einfach mal:
Delphi-Quellcode:
Memo1.Lines.Sorted := True;
|
Re: STRINGS "kürzen"
na gut ich werds ma so probieren^^
|
Re: STRINGS "kürzen"
Zitat:
|
Re: STRINGS "kürzen"
da hast du völlig wahr :mrgreen: die blöden TStrings und TStringList
Dann halt über einen kleinen Umweg:
Delphi-Quellcode:
with TStringList.Create do
try Text := Memo1.Lines.Text; Sort; // es würde auch gehen Sorted := True; Memo1.Lines.Text := Text; finally Free; end; |
Re: STRINGS "kürzen"
oha mit bubblesort hab ich für 1000 strings 2 minuten gebraucht, damit brauch ich für 15000 strings 1 sekunde^^
ich sag nur: Kaum macht man's richtig - schon funktioniert's :mrgreen: :mrgreen: :mrgreen: ^^ Dann nochma: ![]() ![]() ![]() ![]() ![]() ![]() das mit dem neuen thread aufmachen hat sich wohl erledigt^^ |
Re: STRINGS "kürzen"
My lovely mister singing club, hab ich kompliziert gedacht vorhin :shock:. Müssen die Schleifen von SimonRap gewesen sein, die haben mich auch an meinen Schuhen schon immer verwirrt :stupid:
|
Re: STRINGS "kürzen"
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 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