Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi strpos (https://www.delphipraxis.net/4217-strpos.html)

cookie_eater 19. Apr 2003 17:56


strpos
 
Hallo,

hab noch ein kleines Problem. Ich wollte die Position eines textes "hallo ich habe einen computer" bestimmten, der sich in einem memo (memo1) befindet habs so gemacht:

Delphi-Quellcode:
var comptext, suchtext :string;
var gefunden :integer;

begin

    comptext := memo1.Text;
    suchtext := 'computer';
    gefunden : strpos (comptext,suchtext);

end;

end.
Das ganze bringt mir einen Compiler-Error: Inkompatible Typen: 'String' und 'PAnsiChar'

Wer kann mir das erklären???

Grüße

P.S.: Übrigens suche ich schon seit einiger Zeit nach nem Tutorial über Zeichenketten-Operatoren von Delphi (scheinen ja denen von PHP zu ähneln

MrSpock 19. Apr 2003 18:03

Hallo cookie-eater,

wenn du mit Strings arbeiten möchtest, bietet die Unit System dir Funktion Pos, die wie folgt deklariert ist:

Delphi-Quellcode:
function Pos(Substr: string; S: string): Integer;
und der strpos Funktion entspricht.

d3g 19. Apr 2003 18:08

Re: strpos
 
Zitat:

Zitat von cookie_eater
P.S.: Übrigens suche ich schon seit einiger Zeit nach nem Tutorial über Zeichenketten-Operatoren von Delphi (scheinen ja denen von PHP zu ähneln

Nee. Du benutzst hier eine Funktion des Win32-APIs, die hat mit Delphi eher nur etwas am Rande zu tun. Die richtigen Stringverarbeitungsfunktionen findest du in den Units SysUtils und StrUtils - einfach mal in der Hilfe danach schauen, dort auf der Seite "String handling routines" findest du sie alle aufgelistet.

jbg 19. Apr 2003 18:12

Re: strpos
 
Zitat:

Zitat von cookie_eater
scheinen ja denen von PHP zu ähneln

Nur wenn du die PChar (PAnsiChar) Funktionen, die StrXxx lauten, meinst. Diese sind aber nicht einfach auf Pascal-Strings (string) anwendbar. Hier ist ein Typecast nach PChar notwendig.

Delphi-Quellcode:
gefunden := strpos (PChar(comptext),PChar(suchtext));
Du kannst aber auch gleich die für Pascal-Strings zuständige Funktion Pos einsetzen.
Delphi-Quellcode:
gefunden := Pos(suchtext, comptext);

Schau mal in der OnlineHilfe unter dem Inhalt "Visual Component Library Reference" "Categorical Routine Listing" "string handling routines" nach.


Zitat:

Du benutzst hier eine Funktion des Win32-APIs
Falsch. StrPos ist in SysUtils implementiert und gehört somit nicht zu Windows.

Stanlay Hanks 19. Apr 2003 18:14

StrPos sucht in einem String, nach einem String. Ich würde , wie MRSpock gesagt hat, auch Pos() nehmen.

sähe dann so aus:

Delphi-Quellcode:
var comptext, suchtext :string;
    gefunden : Integer;

begin
Comptext := Memo1.Text;
Suchtext := 'Computer';
Gefunden := Pos(Suchtext,Comptext);
end;
Bis dann, man liest sich. Stanlay. :hi:

cookie_eater 19. Apr 2003 19:12

ok das hat geklappt:

Delphi-Quellcode:
var comptext, suchtext :string;
    gefunden : Integer;

begin
Comptext := Memo1.Text;
Suchtext := 'Computer';
Gefunden := Pos(Suchtext,Comptext);
end;
ok nun brauch ich noch was. Bei mir steht der Suchbegriff "computer" an 16ter Stelle in der Memo.

Ich möchte nun alles löschen was vor der 16ten stelle steht! Also Zeichen von 0-16! Wie mach ich das am Besten???

mit dem befehl StringReplace gehts nicht, weil mein programm daten aus einer e-mail erhält und ich nicht weiß welcher text vor dem wort "computer" (mein suchwort) steht...

brr mit php könnte ich es per substr_replace machen...Delphi mach ich noch nicht sooo lange. Komme zwar gut vorran, aber vielleicht gibts ja ne Funktion die ähnlich der substr_replace funktion von PHP ist?

Danke für alle Eure Posts. Dieses Forum ist das Beste was ich für Delphi kenne! :love:

Grüße

Cookie

Chewie 19. Apr 2003 19:16

Schau mal in der Hilfe nach Delete.

cookie_eater 19. Apr 2003 19:42

yo habs mit delete versucht und zwar wollte ich mir das ergebis gern mal ausgeben lassen:

Delphi-Quellcode:
memo1.Text := delete (comptext,0,gefunden);
Bringt mir (wieder mal) nen Compiler-Error:

Inkompatible Typen: 'String' und 'procedure, untyped pointer or untyped parameter'

Was soll das nun wieder? Hab versucht das Ergebnis dieser Operation in der varible comptext zu speichern, aber da bekomme ich selbigen Error...
:x

Hat jemand ne Lösung dafür???

Christian Seehase 19. Apr 2003 19:45

Moin Cookie Eater,

da Delete eine Prozedur ist, hat sie keinen Rückgabewert.
Der erste Parameter ist die Stringvariable aus der gelöscht werden soll,
der zweite gibt an, ab wo, und der dritte wieviele Zeichen.

Haegar 19. Apr 2003 19:48

Zitat:

Zitat von Christian Seehase
da Delete eine Prozedur ist, hat sie keinen Rückgabewert.
Der erste Parameter ist die Stringvariable aus der gelöscht werden soll,
der zweite gibt an, ab wo, und der dritte wieviele Zeichen.

das sieht dann bei dir wie folgt aus:
Delphi-Quellcode:
delete(comptext,0,gefunden);
gruss haegar


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