AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Inkompatible Typen: Char und 'String'

Inkompatible Typen: Char und 'String'

Ein Thema von Crazymodder · begonnen am 8. Feb 2009 · letzter Beitrag vom 10. Jun 2009
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#11

Re: Inkompatible Typen: Char und 'String'

  Alt 9. Jun 2009, 20:56
Ein Char kann nicht leer sein - es enthält immer exakt ein Zeichen.
Robert Wachtel
  Mit Zitat antworten Zitat
Melli012345

Registriert seit: 9. Jun 2009
6 Beiträge
 
#12

Re: Inkompatible Typen: Char und 'String'

  Alt 9. Jun 2009, 21:02
okay, danke! Und wie kann ich dann auf einem anderen Weg erreichen, dass ein Zeichen gelöscht wird?
Ziel ist ja, dass ich ein Wort (z.B. Stuttgart) eingebe, und ein Zeichen (z.B. t) eingebe, und dann in dem Beispiel alle 't' aus dem Wort 'Stuttgart' gelöscht werden, so dass nur noch "Sugar" ausgegeben wird.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Inkompatible Typen: Char und 'String'

  Alt 9. Jun 2009, 21:06
Schau dir mal StringReplace() an
Markus Kinzler
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Inkompatible Typen: Char und 'String'

  Alt 9. Jun 2009, 21:09
Wenn Du ein Zeichen im String "z" löschen willst, dann
if a[i] = z then Delete(z,i,1) aber Du müsstest dann rückwärts durch den String gehen, da z ja u.U. immer kürzer wird und "ende" dann über den String hinaus zeigt.

Dann hast Du (soweit ich das sehe) eine Enlosschleife mit while, weil Du "i" nicht veränderst (immer i = ende = 0)

Dann innerhalb der Schleife Zuweisung an "a" und "z", was irgenwie alles nutzlos macht
  Mit Zitat antworten Zitat
Melli012345

Registriert seit: 9. Jun 2009
6 Beiträge
 
#15

Re: Inkompatible Typen: Char und 'String'

  Alt 9. Jun 2009, 21:53
dankeschön für eure Tipps
hat mir echt geholfen
habs nun auch - fast!
einziges Problem: das Wort "Stuttgart" liefert bei der Aufforderung, alle t zu löschen, "Sutgar"
kann ich da noch was dementsprechend ändern? Oder müsste ich dann nochmal alles umschmeißen?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
var a, z: string;

 begin
a := edit1.text;

for i := 1 to length(a) do

 begin
    z := edit2.text ;
    if a[i] = z then delete(a,i,1);

  end;
label1.caption := a;
    end;
end.
end.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Inkompatible Typen: Char und 'String'

  Alt 9. Jun 2009, 22:06
for i := length(a) downto 1 do Von hinten durch den String, sehe ich jetzt so auf den ersten Blick.

Du musst ja bedenken, das der String immer kürzer wird und am Ende nicht mehr Length(a) hat. Dazu musst Du auch wissen, das die for-Schleife sich beim ersten Durchlauf Length(a) merkt und den wert nicht an die neue Länge anpasst.

€: Das doppelte end. kann auch weg, müsste Delphi sogar darauf hinweisen. Zuweisung an z aus der Schleife raus, das ändert sich ja nicht ständig:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  a, z: string;
begin
  a := edit1.text;
  z := edit2.text;
  for i := length(a) downto 1 do
  begin
    if a[i] = z then delete(a,i,1);
  end;
  label1.caption := a;
end;

end.
PS: bei Deinem letzten Code-Beispiel hat man schon gesehen, das Du die Vorschläge umgesetzt hast, auch wenn nicht alles war wohl zu viel. Achte ein bischen auf die Formatierung (also Einrückung), dann siehst Du besser wenn sich mal ein doppeltes End oder Begin eingeschlichen hat.

PPS: Der Vorschlag von mkinzler darfst Du Dir jetzt auch anschauen. Da hättest Du nicht sooo viel gelernt, aber wärst vor einer Stunde mit der Aufgabe fertig gewesen
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#17

Re: Inkompatible Typen: Char und 'String'

  Alt 9. Jun 2009, 22:22
Hallo,
@Melli012345

hab' hier 'ne Funktion zum Löschen von Zeichen in Verzeichnissen/Pfaden,
lässt sich mit wenig AUfwand für deine Zwecke "umbauen"

Delphi-Quellcode:
function CheckInvalidChars(const FilePath: String): String; // replace invalid Path-File-Chars
var
 sFilePath, sFileName: String;
 l, i : Integer;
Const
 RePath : array[1..13] of String =
  ('/', '*', '?', '"', '<', '>', '|', '!', '§', '$', '%', '&', '#'); // Chars to replace in Path
 ReFile : array[1..15] of String =
  ('/', '\', ':', '*', '<', '>', '?', '"', '|', '!', '§', '$', '%', '&', '#'); // Chars to replace in File
 ReP : String = '_'; // replace invalid chars in Path with '_'
 ReF : String = '_'; // replace invalid chars in File with '_'
begin
 l := 0;
  for i := 1 to Length(FilePath) do
   begin
    if FilePath[i] = '\then l := i;
   end;

 sFileName := copy(FilePath, l+1, length(FilePath)-l+1);
 sFilePath := copy(FilePath, 0, l);

 // File - Path, check and replace
 for i := 1 to 13 do
  sFilePath := StringReplace(sFilePath, RePath[i], ReP, [rfReplaceAll, rfIgnoreCase]);

 // File - Name, check and replace
 for i := 1 to 15 do
  sFileName := StringReplace(sFileName, ReFile[i], ReF, [rfReplaceAll, rfIgnoreCase]);

 Result := sFilePath + sFileName;
end;
Markus H.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#18

Re: Inkompatible Typen: Char und 'String'

  Alt 10. Jun 2009, 07:49
Wobei natürlich jede Lösung mit StringReplace den Haken hat, das Zeichen getauscht und nicht gelöscht werden können.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Inkompatible Typen: Char und 'String'

  Alt 10. Jun 2009, 11:07
Zitat:
Wobei natürlich jede Lösung mit StringReplace den Haken hat, das Zeichen getauscht und nicht gelöscht werden können.
Doch man kann doch durch '' ersetzen, dann wird das Zeichen gelöscht.
Zitat:
sZucker := StringReplace('Stuttgart', 't', '', [rfReplaceAll]);
Markus Kinzler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:45 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