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/)
-   -   Delphi Teilstring in einen anderen String kopieren (https://www.delphipraxis.net/70536-teilstring-einen-anderen-string-kopieren.html)

fes 31. Mai 2006 16:50


Teilstring in einen anderen String kopieren
 
Hallo zusammen!

Hab die Boardsuche und Google schon bemüht, aber nichts gefunden.
Ich möchte ganz einfach aus einem String wie z.b. "blablabla'dfdf'" aus der Zwischenablage ab dem ersten Hochkomma den String auslesen, und in einen Variable scheiben.
Bin schon halber am verzweifeln, weil ich den Fehler ned finden kann:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
I,k:Integer;

begin
if Clipboard.Hasformat(CF_TEXT) then
 begin

 c := clipboard.AsText;
 if y = false then exit;     // sicherung, dass die schleife nur 1 mal durchlaufen wird
  for i:=0 to length(c) do
   begin
    if c[i] = '''' then //sobald ein Hochkomma vorhanden ist...

     begin

      for k := 0 to length(c)-2  do //...wird der string ab da in die variable d geschrieben
       begin

       d[k] := c[i+1];     //c+1 damit der das erste hochkomma nicht mitgeschrieben wird
                            //und length(c)-2 damit das 2te hochkomma nicht mitgeschrieben wird
       end;

    y:= false;      //sicherung wird gesetzt
     end;


    end;

  end;
  edit1.text := d;
end;
Aber es funktioniert nicht, d ist leer also ' ' auch wenn man davor d einen wert zuweist.
Des weitern kommt dann noch ein Fehler, wenn man das Programm dann beendet: "Exeption EInvalidPointer in Modul Project1.exe...."

Hat jemand ne Idee?

arbu man 31. Mai 2006 16:55

Re: Teilstring in einen anderen String kopieren
 
Guck mal in der Hilfe Nach
Delphi-Referenz durchsuchenPos
Delphi-Referenz durchsuchenCopy

Zacherl 31. Mai 2006 16:57

Re: Teilstring in einen anderen String kopieren
 
Delphi-Quellcode:
x := Copy('blablabla'dfdf', Pos('blablabla'dfdf', '''), length('blablabla'dfdf'));
So in etwa.

Florian

TeronG 31. Mai 2006 17:04

Re: Teilstring in einen anderen String kopieren
 
Delphi-Quellcode:
for k := 0 to length(c)-2  do //...wird der string ab da in die variable d geschrieben
begin
  d[k] := c[i+1];     //c+1 damit der das erste hochkomma nicht mitgeschrieben wird
                       //und length(c)-2 damit das 2te hochkomma nicht mitgeschrieben wird
end;
an der Stelle z.B. schreibst du x-mal in d[k] immerwieder den gleichen wert c[i+1] irgendwas mit c[i+k] könnte passen .. aber eigentlich würde ich dir auch eher zu Pos raten.
da kannste dann alles in "einer zeile" machen.

Edit:

Zitat:

Zitat von Florian Bernd
Delphi-Quellcode:
x := Copy('blablabla'dfdf', Pos('blablabla'dfdf', '''), length('blablabla'dfdf'));
So in etwa.

Florian

ja sowas in der art hätte ich auch gedacht aber müssten das nicht 4 ' sein? (bei dir nur 3)
und das "'blablabla'dfdf'" is dann das clipboard.AsText

HuxXx 31. Mai 2006 17:05

Re: Teilstring in einen anderen String kopieren
 
Mhmm..., das was Florian Bernd da schreibt ist eigentlich logisch...
aber es scheint nicht zu funktionieren. (achja, das ' wird zu '').

Hier mal meine Version (hab's getestet):

Delphi-Quellcode:
var s:String;
var i, copy_to:integer;
begin
s:=Clipboard.AsText;
for i:=1 to length(s) do begin
if s[i] = '''' then begin
copy_to:=i;
end;
end;
ShowMessage(copy(s,1,copy_to-1));
end;
guut..., das ist eigentlich n bissle umständlich..., aber mir fällt grad nix anderes ein...

Greetz by Hux :dp:

Edit: "da schreibt" eingefügt... :lol:
restlichen 3mal: Grammatikfehler im 1. Satz verbessert -.-

Evian 31. Mai 2006 17:10

Re: Teilstring in einen anderen String kopieren
 
wie wäre es mit

Delphi-Quellcode:
if pos(chr(39),c) <> 0 THEN
BEGIN
  edit1.text := copy(c,pos(chr(39)+1,c),length(c))
END else
edit1.text := 'Kein Hochkomma vorhanden';
gruß Evian

fes 31. Mai 2006 17:12

Re: Teilstring in einen anderen String kopieren
 
@huxxx: also wenn ich das nach deiner procedure mache, gibt er mir den gleichen text aus, aber er entfernt das letzte hochkomma.

Also aus dem text blablabla'dfdf' wird blablabla'dfdf

Die anderen Vorschläge bin ich grad am ausprobieren.

Zacherl 31. Mai 2006 17:16

Re: Teilstring in einen anderen String kopieren
 
Delphi-Quellcode:
Copy('blablabla''dfdf''', Pos('''', 'blablabla''dfdf'''), length('blablabla''dfdf'''));
So gehts aber.
Rauskommt: 'dfdf

Ohne das Hochkomma am Anfang:
Delphi-Quellcode:
Copy('blablabla''dfdf''', Pos('''', 'blablabla''dfdf''') -1, length('blablabla''dfdf'''));
Florian

fes 31. Mai 2006 17:18

Re: Teilstring in einen anderen String kopieren
 
@evian: das funktioniert irgenwie nicht, bringt den fehler "inkompatible typen"

Evian 31. Mai 2006 17:25

Re: Teilstring in einen anderen String kopieren
 
das passiert wenn man zuschnell was zusammenkliert.

aus edit1.text := copy(c,pos(chr(39)+1,c),length(c)) muss natürlich
edit1.text := copy(c,pos(chr(39),c)+1,length(c)) werden.

gesammt wäre das dann follgendes:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Clipboard.Hasformat(CF_TEXT) then
begin
  c := clipboard.AsText;
  if pos(chr(39),c) <> 0 THEN
  BEGIN
    edit1.text := copy(c,pos(chr(39),c)+1,length(c))
  END else
  edit1.text := 'Kein Hochkomma vorhanden';
end;
end;
der code gibt dir aber nur den Teilstring vom ersten Hochkomma bis zum ende des Clipboardtextes, wenn Du den Text zwichen 2 Hochkammas haben willst, musst Du den Code natürlich entsprechend anpassen, bzw. noch mal posten.

EDIT:
Ist c eine globale String-Variabel?!


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

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 by Thomas Breitkreuz