AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

internetfähigen Namen erstellen

Ein Thema von torud · begonnen am 5. Nov 2004 · letzter Beitrag vom 10. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

internetfähigen Namen erstellen

  Alt 5. Nov 2004, 20:51
Hallo Wissende!

Ich möchte mich durch eine Liste, gefüllt mit Bildpfaden durchkämpfen und diese konvertieren und unter einem internetkonformen namen speichern.

Das heisst alle Leerzeichen, Sonderzeichen und sonstigen nicht erwünschten Zeichen durch EIN Zeichen (von mir aus "_") ersetzen.

Gibt es für dieses Vorhaben schon was fertiges oder muss man sich in einer Funktion jeden einzelnen Buchstaben des Bildnamen vornehmen?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: internetfähigen Namen erstellen

  Alt 5. Nov 2004, 20:53
Hi torud,

da wirst du dich wohl oder übel selbst durchkämpfen müssen. Ich kenne keine Funktion die das macht.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: internetfähigen Namen erstellen

  Alt 5. Nov 2004, 21:03
Wenn dir die Liste als Strings vorliegt, dann schau dir mal

StringReplace

an. Bsp:
NewPath := StringReplace (OldPath,' ','_',[rfReplaceAll,rfIgnoreCase]) ; Sollte dir die List in einer TStringList vorliegen, sollte das Ganze sogar in einem Ruck gehen,
SL.text := StringReplace (SL.text,' ','_',[rfReplaceAll,rfIgnoreCase]) ; Habs aber nicht ausprobiert.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#4

Re: internetfähigen Namen erstellen

  Alt 10. Nov 2004, 09:57
Hallo!

Nur um nochmal sicher zu gehen, würde ich gern von checken lassen, ob ich da nicht was falsch mache!

Ich rufe nun zum Erzeugen eines "sauberen" Namens folgende Funktion auf:

Delphi-Quellcode:
function MakePicName(OldPicName:string):String;
begin
  Result:='';
    with Form1 do
      begin
        if chk_names_safety.Checked then
          begin
            Result := StringReplace (OldPicName,'&','_',[rfReplaceAll,rfIgnoreCase]) ;
            Result := StringReplace (OldPicName,'-','_',[rfReplaceAll,rfIgnoreCase]) ;
          end;
        if chk_names_spaces.Checked then
          begin
            Result := StringReplace (OldPicName,' ','_',[rfReplaceAll,rfIgnoreCase]) ;
          end;
      end;
end;
Nun wollte ich wissen, ob man den Aufruf für die Zeichen "&" und "-" nicht auch in einem Rutsch durchführen kann. Oder ist es so übersichtlicher!?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: internetfähigen Namen erstellen

  Alt 10. Nov 2004, 11:08
Moin torud,

erstens ist es so übersichtlicher, zweitens geht es AFAIK nicht in einem Rutsch.
Du musst allerdings noch die deutschen Umlaute ersetzen, manche Webserver haben die gar nicht gern.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#6

Re: internetfähigen Namen erstellen

  Alt 10. Nov 2004, 11:10
oh ja, die hätte ich beinahe vergessen!
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Bowler
Bowler

Registriert seit: 8. Sep 2003
Ort: Bochum
148 Beiträge
 
Delphi XE7 Enterprise
 
#7

Re: internetfähigen Namen erstellen

  Alt 10. Nov 2004, 12:31
Delphi-Quellcode:
...
            Result := StringReplace (OldPicName,'&','_',[rfReplaceAll,rfIgnoreCase]) ;
            Result := StringReplace (OldPicName,'-','_',[rfReplaceAll,rfIgnoreCase]) ;
...
Ist hier nicht was falsch? IMHO dürfte nach diesen beiden Aufrufen nur das '-' ersetzt worden sein. Der erste Aufruf wird überschrieben. Man müsste das Ergebnis aus dem 1. Aufruf zwischenspeichern:

Delphi-Quellcode:
...
            OldPicName:= StringReplace (OldPicName,'&','_',[rfReplaceAll,rfIgnoreCase]) ;
            Result := StringReplace (OldPicName,'-','_',[rfReplaceAll,rfIgnoreCase]) ;
...
Gruß
Christian
Christian Rüsken
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: internetfähigen Namen erstellen

  Alt 10. Nov 2004, 12:38
Das stimmt, hab ich auch komplett übersehn
StringReplace gibt den String mit Ersetzungen als Ergebnis zurück, das heißt das Ergebnis eines StringReplace muss als Input für den nächsten verwendet werden. Also auch z.B.:

Delphi-Quellcode:
Result := StringReplace(OldPicName,'&','_',[rfReplaceAll,rfIgnoreCase]);
Result := StringReplace(Result,'-','_',[rfReplaceAll,rfIgnoreCase]);
Result := StringReplace(Result,'ä','_',[rfReplaceAll,rfIgnoreCase]);
Result := StringReplace(Result,'Ä','_',[rfReplaceAll,rfIgnoreCase]);
Result := StringReplace(Result,'ö','_',[rfReplaceAll,rfIgnoreCase]);
Result := StringReplace(Result,'Ö','_',[rfReplaceAll,rfIgnoreCase]);
Result := StringReplace(Result,'ü','_',[rfReplaceAll,rfIgnoreCase]);
Result := StringReplace(Result,'Ü','_',[rfReplaceAll,rfIgnoreCase]);
Result := StringReplace(Result,'ß','_',[rfReplaceAll,rfIgnoreCase]);
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: internetfähigen Namen erstellen

  Alt 10. Nov 2004, 13:33
Zitat von torud:
...einem internetkonformen namen...
Gibt es für dieses Vorhaben schon was fertiges ...
In der WinINet.DLL gibt es die Funktion InternetCanonicalizeUrl.
http://msdn.microsoft.com/library/de...icalizeurl.asp
Du brauchst nur noch eine "Delphi freundliche" Kapselung darum.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#10

Re: internetfähigen Namen erstellen

  Alt 10. Nov 2004, 13:37
Noch ne Variante:

Delphi-Quellcode:
const
  InvalidChars = ['&',' ','ä','ö' ... ]

.
.
.

result:=OldPicName;
for i:=1 to length(result) do
begin
  if result[i] in InvalidChars then
    result[i]:='_';
end;
Achtung ungetestet. Vom Prinzip her sollte es aber funktionieren und ist wesentlich schneller, als viele StringReplace
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:27 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