Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit hochkomma in String (https://www.delphipraxis.net/44954-problem-mit-hochkomma-string.html)

Gigant02 27. Apr 2005 14:06


Problem mit hochkomma in String
 
Delphi 5

hallo ich möchte in einen String die anzahl der hochkommas (') herrausfinden

wie mache ich das ???

lg, Alex

mumu 27. Apr 2005 14:11

Re: Wie kann ich ein hochkommer finden ??
 
''''

Gigant02 27. Apr 2005 14:13

Re: Wie kann ich ein hochkommer finden ??
 
das geht doch garnicht

somit habe ich das doch ausgekommert

Treffnix 27. Apr 2005 14:15

Re: Wie kann ich ein hochkommer finden ??
 
mit Delphi-Referenz durchsuchenposex nach dem jeweils nächsten Hochkomma suchen und bei jedem Fund die Anzahl inkrementieren. Im nächsten Schleifendurchlauf dann jeweils die letze Fundstelle als Offset.

Airblader 27. Apr 2005 14:17

Re: Wie kann ich ein hochkommer finden ??
 
Zitat:

Zitat von Gigant02
das geht doch garnicht

somit habe ich das doch ausgekommert

was bedeutet "auskommern" :gruebel:
Der Plural von "Komma" ist übrigens "Kommata" ;)

Und um ein ' zu suchen musst du es escapen ;)

air

Gigant02 27. Apr 2005 14:18

Re: Wie kann ich ein hochkommer finden ??
 
ja sowas habe ich ja auch gedachte

aber wie suche ich nach einen hochkomma ??

eine andere frage wie bekomme ich ein hochkomma in einen string rein

das würde mir schon sehr weiterhelfen


escapen was ist das den ???
mensch ist das schwerr

lg, Alex

Robert Marquardt 27. Apr 2005 14:20

Re: Wie kann ich ein hochkommer finden ??
 
Also vom Titel des Threads her wuerde ich dir empfehlen mal auf einen von den Viagra-Spams zu antworten.

chrisw 27. Apr 2005 14:20

Re: Wie kann ich ein hochkommer finden ??
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var stri : String;
    i,HochKommaZaehler : Integer;
begin
  HochKommaZaehler := 0;
  stri := ' 1'' 2'' 3'' 4'' ';   // 4 Hochkommas
  for i := 1 to length(stri) do if stri[i] = '''' then inc(HochKommaZaehler);
  showmessage(Inttostr(HochKommaZaehler)); //Ergebnis = 4
end;

BenjaminH 27. Apr 2005 14:20

Re: Wie kann ich ein hochkommer finden ??
 
Zitat:

Zitat von Gigant02
eine andere frage wie bekomme ich ein hochkomma in einen string rein

Das Hochkomma durch '', also 2 Hochkommata, darstellen:
Delphi-Quellcode:
s:='Wie geht''s?';
Grüße Benjamin
[Edit]Das war wohl zu viel des guten
So würde es mit der Menge passen:
Delphi-Quellcode:
s:='Wie geht'+''''+'s?';
[/Edit]

Gigant02 27. Apr 2005 14:27

Re: Wie kann ich ein hochkommer finden ??
 
Stopt mal eben

ich glaube wir reden hier aneinander vorbei

nun ich meine das hochkomme ' und nicht das " hochkomma

Waldteufel 27. Apr 2005 14:29

Re: Wie kann ich ein hochkommer finden ??
 
Hi.

Zitat:

Zitat von Gigant02
Stopt mal eben

ich glaube wir reden hier aneinander vorbei

nun ich meine das hochkomme ' und nicht das " hochkomma

Nein... Tut ihr nicht ;-)

Delphi-Quellcode:
s := 'Wie geht''s?'
ergibt: Wie geht's

Delphi-Quellcode:
s := '"Wie geht''s?"'
ergibt: "Wie geht's"

chrisw 27. Apr 2005 14:30

Re: Wie kann ich ein hochkommer finden ??
 
Schau mal mein Code, der zählt die (') Hochkommas, in Delphi werden doe aber mit ('') zweimal (') hintereinander geschrieben, da (') ein reserviertes Zeichen (für Stringanfang und -ende ) ist.

Gigant02 27. Apr 2005 14:31

Re: Wie kann ich ein hochkommer finden ??
 
gut und wenn ich nur das zeichen (') in einen string haben will ??

chrisw 27. Apr 2005 14:34

Re: Wie kann ich ein hochkommer finden ??
 
s := '('')';
ergibt nach showmessage(s); ein (') !!!!

Wenn Du jetzt die Klammern noch weglässt, hasst Du ein ' !!!

Gigant02 27. Apr 2005 14:37

Re: Wie kann ich ein hochkommer finden ??
 
hmm crisw

irgendwie peile ich zur zeit garnix mehr

also ich habe in problem

ich habe ein Programm welches unter windows geschrieben ist und ich muss das auf linux laufen lassen

also das programm arbeitet mit einer mysql datanbank und mysql kommt damit nicht klar

'Select * from ARTIKEL where a_nr = 'Hallo'

sondern will

'select * from artikel where a_nr = 'Hallo'

nun wollte ich eine funktion schreiben die daraus halt
'select * from artikel where a_nr = 'Hallo'

das macht

das hallo darf aber nicht verändert werden
das ist mein problem

also wollte ich alles durch ein lowercase schicken bis auf die sachen die in (') stehen

nun das ist ein einfaches balspiel es gibt sql anweisungen die viel viel komplexer sind

das ist mein problem

lg, Alex

Gigant02 27. Apr 2005 14:38

Re: Wie kann ich ein hochkommer finden ??
 
Zitat:

Zitat von chrisw
s := '('')';
ergibt nach showmessage(s); ein (') !!!!

Wenn Du jetzt die Klammern noch weglässt, hasst Du ein ' !!!


hmm ok könnte mir echt weiterhelfen

danke erstmal

jfheins 27. Apr 2005 14:41

Re: Wie kann ich ein hochkommer finden ??
 
Vorgehensweise:

Du hast 2 Stringvariablen, eine Eingabe und eine Ausgabe

:arrow: Du suchst mit PosEx ('''') ob da Hochkommata drin sind.

:arrow: Wenn ja, kopierst du mir PosEx und Copy die Teile zwischen den Hochkommata in die Ausgabe und wandelst sie dabei ggf. um

Wie wärs's ?

Gigant02 27. Apr 2005 14:43

Re: Wie kann ich ein hochkommer finden ??
 
genauso mache ich es ja gerade

lg, Gigant02

Khabarakh 27. Apr 2005 14:44

Re: Wie kann ich ein hochkommer finden ??
 
Oder du benutzst einfach #39.

chrisw 27. Apr 2005 14:52

Re: Wie kann ich ein hochkommer finden ??
 
So etwa ?


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var stri : String;
    i   : Integer;
    ZwischenZweiHochkommas : Boolean;
begin
  stri := 'Select * from ARTIKEL where a_nr = ''HALLO''';
  ZwischenZweiHochkommas := False;
  for i := 1 to length(stri) do
  begin
    if stri[i] = '''' then ZwischenZweiHochkommas := not ZwischenZweiHochkommas;
    if not ZwischenZweiHochkommas then
      if (ord(Stri[i]) >= 65) and (ord(Stri[i]) <= 90) then  Stri[i] := chr(ord(stri[i]) +32);
  end;
  showmessage(stri);
end;

jfheins 27. Apr 2005 14:55

Re: Wie kann ich ein hochkommer finden ??
 
Jetzt könnte natürlich auch jemand auf die dumme Idee kommen, und ein ' in die Mysql-DB schreiben wollen.
Er escapt zwar das ' durch \' aber deine Lösung sieht da nicht so gut aus :wink:

chrisw 27. Apr 2005 15:02

Re: Wie kann ich ein hochkommer finden ??
 
Zitat:

Jetzt könnte natürlich auch jemand auf die dumme Idee kommen, und ein ' in die Mysql-DB schreiben wollen.
Er escapt zwar das ' durch \' aber deine Lösung sieht da nicht so gut aus
OK, das muss man Ausschliessen oder Abfangen !!

Gigant02 27. Apr 2005 15:24

Re: Wie kann ich ein hochkommer finden ??
 
so

nun muss ich leider nach hause fahren

aber ich werd michheuteabend damit beschäftigen
und euch weiter mit meinen problemen nerven

aber deine lösung geviel mir schon sehr gut

chrisw

ich werd sie glaub ich noch etwa auschmücken und euch dann heuteabend nochmal vorstellen

lg, gigant02

Gigant02 27. Apr 2005 16:19

Re: Wie kann ich ein hochkommer finden ??
 
So nun ich habe es geschaft ich bin zuhause

ok mein Delphi 5 ist gestartet und nun geht es weiter mit testen

Gigant02 27. Apr 2005 17:08

Re: Wie kann ich ein hochkommer finden ??
 
mensch das geht ja

nun noch eine frage

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var stri : String;
    i   : Integer;
    ZwischenZweiHochkommas : Boolean;
begin
  stri := 'Select * from ARTIKEL where a_nr = ''Hallo''';
  ZwischenZweiHochkommas := False;
  for i := 1 to length(stri) do
  begin
    if stri[i] = '''' then begin
      ZwischenZweiHochkommas := not ZwischenZweiHochkommas;
    end;
    if not ZwischenZweiHochkommas then begin
      if (ord(Stri[i]) >= 65) and (ord(Stri[i]) <= 90) then begin
        Stri[i] := chr(ord(stri[i]) +32);
      end;
    end;
  end;
  showmessage(stri);

end;

end.
wo wandel ich das in kleinbuchstaben um ??

Waldteufel 27. Apr 2005 17:11

Re: Wie kann ich ein hochkommer finden ??
 
Hi.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var stri : String;
    i   : Integer;
    ZwischenZweiHochkommas : Boolean;
begin
  stri := 'Select * from ARTIKEL where a_nr = ''Hallo''';
  ZwischenZweiHochkommas := False;
  for i := 1 to length(stri) do
  begin
    if stri[i] = '''' then begin
      ZwischenZweiHochkommas := not ZwischenZweiHochkommas;
    end;
    if not ZwischenZweiHochkommas then begin
      if (ord(Stri[i]) >= 65) and (ord(Stri[i]) <= 90) then begin
        Stri[i] := chr(ord(stri[i]) +32); // <-- hier wird umgewandelt
      end;
    end;
  end;
  showmessage(stri);

end;

end.

Gigant02 27. Apr 2005 17:44

Re: Wie kann ich ein hochkommer finden ??
 
lach ich blinde nuss

ok ich sach schon nix mehr

lg, Alex

Gigant02 27. Apr 2005 19:21

Re: Wie kann ich ein hochkommer finden ??
 
ok doch ich frag doch noch was

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var stri : String;
    i   : Integer;
    ZwischenZweiHochkommas : Boolean;
begin

  stri := 'Select * from ARTIKEL where a_nr = ''Hallo'' ' +
          'Select * from ARTIKEL where a_nr = ''Hallo''';

  ZwischenZweiHochkommas := False;
  for i := 1 to length(stri) do
  begin
    if stri[i] = '''' then begin
      ZwischenZweiHochkommas := not ZwischenZweiHochkommas;
    end;
    if not ZwischenZweiHochkommas then begin
      if (ord(Stri[i]) >= 65) and (ord(Stri[i]) <= 90) then begin
        Stri[i] := chr(ord(stri[i]) +32);
      end;
    end;
  end;

  showmessage(stri);

end;
Nun gut ich frage mich warum die zeile
ZwischenZweiHochkommas := not ZwischenZweiHochkommas;
so ist und nicht
ZwischenZweiHochkommas := False;

was mache ich da mit der Boolischen Variable ???

also ich habe gerade rumprobiert und so wie ich meine geht es nicht

aber was wird da gemacht ich kenn das so überhaupt nicht

kann mir das mal einer erklären ???

lg, Gigant

jfheins 27. Apr 2005 19:24

Re: Wie kann ich ein hochkommer finden ??
 
Du kehrst sie um. Wenn sie True war, ist sie jetzt False und umgekehrt.

Wenn du also in Hochkommata warst, bist du jetzt nicht mehr drin und umgekehrt ...

;)

alcaeus 27. Apr 2005 19:25

Re: Wie kann ich ein hochkommer finden ??
 
Hallo Gigant02,

naja, du startest ausserhalb von Hochkommas. Sobald du auf ein Hochkomma triffst, muss die Variable true sein, beim naechsten '' wieder false, dann wieder true usw. Das geht eben mal mit dem not-Konstrukt.

Greetz
alcaeus

Gigant02 27. Apr 2005 19:30

Re: Wie kann ich ein hochkommer finden ??
 
ahh jetzt habe ich es

es ist also eine nigierrung

ich nehme den zustandt den ich hatte undn kehre ihn um

also wenn er auf true war ist er danach false

oder nicht ??
lg, Gigant

alcaeus 27. Apr 2005 19:31

Re: Wie kann ich ein hochkommer finden ??
 
Zitat:

Zitat von Gigant02
ja aber warum kann ich nicht einfach

ZwischenZweiHochkommas := False;
oder true setzten

wo ist der unterschied ???

lg, Gigant

Warum willst du das hier:
Delphi-Quellcode:
if ZwischenZweiHochkommas then
  ZwischenZweiHochkommas := False
else
  ZwischenZweiHochkommas := True;
anstatt dem hier
Delphi-Quellcode:
ZwischenZweiHochkommas := not ZwischenZweiHochkommas;
schreiben? :gruebel:

Greetz
alcaeus

Gigant02 27. Apr 2005 19:34

Re: Wie kann ich ein hochkommer finden ??
 
nee ich gerade etwas verplant gewehsen sorry


nun ich dachte immer das das not nur in abfragen geht

aber das ich damit eine negierung erfolgen kann wusste ich nicht

mensch damit erleichtert sich ja meine arbeit enorm

danke für eure extrem gute und schnelle hilfe

Khabarakh 27. Apr 2005 19:38

Re: Wie kann ich ein hochkommer finden ??
 
Zitat:

Zitat von Gigant02
nee ich gerade etwas verplant gewehsen sorry


nun ich dachte immer das das not nur in abfragen geht

aber das ich damit eine negierung erfolgen kann wusste ich nicht

mensch damit erleichtert sich ja meine arbeit enorm

danke für eure extrem gute und schnelle hilfe

Abfragen sind nichts anderes als Boolean-Ausdrücke.
Delphi-Quellcode:
var Bedingung;

Bedingung := Edit1.Text = 'Hallo';
if Bedingung then
PS: Kannst du bitte mal den Titel ändern :stupid: ?

Gigant02 27. Apr 2005 19:43

Re: Problem mit hochkomma in String
 
mensch ich sollte den Boolean-Ausdrücke

mehr beachtung schenken

lg, Gigant


Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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