AGB  ·  Datenschutz  ·  Impressum  







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

strpos

Ein Thema von cookie_eater · begonnen am 19. Apr 2003 · letzter Beitrag vom 20. Apr 2003
Antwort Antwort
Seite 1 von 2  1 2      
cookie_eater

Registriert seit: 17. Apr 2003
21 Beiträge
 
#1

strpos

  Alt 19. Apr 2003, 18:56
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
Bitte drücken Sie F13 zum Start des Intelligenz-Tests
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2
  Alt 19. Apr 2003, 19:03
Hallo cookie-eater,

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

function Pos(Substr: string; S: string): Integer; und der strpos Funktion entspricht.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#3

Re: strpos

  Alt 19. Apr 2003, 19:08
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.
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: strpos

  Alt 19. Apr 2003, 19:12
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.

gefunden := strpos (PChar(comptext),PChar(suchtext)); Du kannst aber auch gleich die für Pascal-Strings zuständige Funktion Pos einsetzen.
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.
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#5
  Alt 19. Apr 2003, 19: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.
  Mit Zitat antworten Zitat
cookie_eater

Registriert seit: 17. Apr 2003
21 Beiträge
 
#6
  Alt 19. Apr 2003, 20: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!

Grüße

Cookie
Bitte drücken Sie F13 zum Start des Intelligenz-Tests
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7
  Alt 19. Apr 2003, 20:16
Schau mal in der Hilfe nach Delete.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
cookie_eater

Registriert seit: 17. Apr 2003
21 Beiträge
 
#8
  Alt 19. Apr 2003, 20:42
yo habs mit delete versucht und zwar wollte ich mir das ergebis gern mal ausgeben lassen:

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...


Hat jemand ne Lösung dafür???
Bitte drücken Sie F13 zum Start des Intelligenz-Tests
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 19. Apr 2003, 20: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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#10
  Alt 19. Apr 2003, 20:48
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:
delete(comptext,0,gefunden); gruss haegar
  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 17: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