Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Letzten Teil eines Strings entfernen bei unbekannter Länge (https://www.delphipraxis.net/156868-letzten-teil-eines-strings-entfernen-bei-unbekannter-laenge.html)

SpiDe1500 17. Dez 2010 21:52

Delphi-Version: 5

Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Hallo,

ich muss den letzten Teil bzw Buchstaben eines Strings entfernen . Der Buchstabe ist unbekannt und die länge auch, soltle also komplett algemeingültig sein.
Der Delete Befehl ist mir bekannt, jedoch müsste ich für den irgendwie die Länge wissen, oder kann man den auch "von hinten" zählen lassen? das wäre natürlich das einfachste... :)
Für eine Anfänger-Freundliche (dh ausführliche) erklärung wäre ich seeehr dankbar :)

danke :)

SpiDe

Namenloser 17. Dez 2010 21:56

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Du kannst die Länge eines Strings mit der Funktion Delphi-Referenz durchsuchenLength ermitteln. Somit kannst du "von hinten zählen", indem du einfach die Stelle von der Länge subtrahierst.
Um die letzte Stelle zu entfernen kannst du dann die von dir angesprochene Delphi-Referenz durchsuchenDelete-Funktion oder Delphi-Referenz durchsuchenSetLength verwenden, die quasi das Gegenstück zu Delphi-Referenz durchsuchenLength ist.

SpiDe1500 17. Dez 2010 21:57

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Super! Danke schonmal!

lbccaleb 17. Dez 2010 22:04

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
So geht das runterzählen...

Delphi-Quellcode:
var I: Integer;

for I :=1 downto Length(deinstring) do
  begin;

  end;

SpiDe1500 17. Dez 2010 22:11

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Super!
Hat geklappt... :)
Soll von der Schule her eine Multiplikationsaufgabe aufschlüsseln, sodass er das Ergebnis durch Plus rausbekommt.
Der gesamte Vorgang sollte dann auch in einem Label angegeben werden...
Dh, wenn ich 4 x 5 eingebe sollte im Label 5+5+5+5 stehen ;) ...

habe das so gelöst:
begin
ergebnis := strtoint(edit1.text);
eingabe2 := strtoint(edit2.text);
eingabe2 := eingabe2 - 1;
for i:= 1 to (eingabe2) do begin
ergebnis := ergebnis + strtoint(edit1.Text) ;
formel := formel +edit2.text + '+';

end;
for I :=1 downto Length(formel) do
begin;

end;
Delete(formel, i, 1);
label2.caption := inttostr(ergebnis);
label3.Caption := formel;

Blöd nur, das bei der letzten Schleife dann noch ein + dahinter stand...
also...: 5+5+5+5+ , was kein befriedigendes Ergebnis war.
Aber nun klappts hervorragend! :)

Danke an Euch beide ;)

scrat1979 17. Dez 2010 22:32

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Delphi-Quellcode:
delete(formel, length(formel), 1);
... hätte es auch getan :)

Namenloser 17. Dez 2010 22:36

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Und ist sicherer, denn Schleifenvariablen sind nach der Schleife undefiniert (der Compiler gibt deshalb auch eine Warnung aus). Dass dein code funktioniert, ist also reines glück.
Und
Delphi-Quellcode:
for I :=1 downto Length(formel) do
ist eh sinnlos, weil die Schleife eigentlich niemals durchlaufen wird, weil Length(Formel) normal > 1 ist. Zumal die Schleife ja auch gar keinen Inhalt hat, also komplett sinnlos ist.

SpiDe1500 17. Dez 2010 22:38

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Super, wieder was gelernt. 2 Befehle zusammengesetzt ergeben häufig genau das, was man sucht... muss man nur drauf kommen bzw das kennen.

Danke ! :)
So ists natürlich geschickter! ;)

Sir Rufo 17. Dez 2010 22:41

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Zitat:

Zitat von SpiDe1500 (Beitrag 1069188)
Super, wieder was gelernt. 2 Befehle zusammengesetzt ergeben häufig genau das, was man sucht... muss man nur drauf kommen bzw das kennen.

Danke ! :)
So ists natürlich geschickter! ;)

Delphi ist Lego für Erwachsene :mrgreen:

SpiDe1500 17. Dez 2010 22:49

AW: Letzten Teil eines Strings entfernen bei unbekannter Länge
 
Ich merks langsam auch :)

Oehm, kurze Offtopic Frage:

Kennt jmd. zufällig ein Tutorial für ein einfaches Spiel, wo schritt für Schritt erklärt wird, wie man es entwickelt? Im Sinne von...Pong, Breakout...Sowas in der Richtung halt. :) Würde mich sehr interessieren, nicht des Spieles wegen, sondern da ich denke, das ich dort noch eine ganze Menge lernen kann.
Mir gehen nämlich langsam die Ideen aus, was ich programmieren könnte. Verschiedene Units, Timer, ... usw usf - krieg ich alles hin. Die Ereignis-Dinger (onActivate.....) habe ich auch verstanden.
Nur viel mehr als "Zufallsgeneratorspiel" (gibts bei mir auch optional mit Dateilöschung. sowas wie "windows roulette", dank wächterkarte ein lustiges spiel! :D ) sind momentan einfach nicht drin, da mir die Anfangsidee für etwas komplexeres fehlt.

Danke schonmal!

PS: Super Forum! Ich glaube, ihr habt mich hier jetzt öfter am Hals ;) Werde versuchen, meine "dummen" Fragen auf ein erträgliches Minimum zu reduzieren und mich mehr an die Suchfunktion halten.

MfG

SpiDe


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.
Seite 1 von 2  1 2      

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