Delphi-PRAXiS

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

Pseudemys Nelsoni 30. Mai 2004 11:29


lstrpos ?
 
moin,

gibt es irgendeine API funktion mit der ich ein vorkommen eines chars/strings in einem string prüfen kann? eben wie Pos()?

mirage228 30. Mai 2004 12:15

Re: lstrpos ?
 
Hi,

kopiere doch die Pos (AnsiStrPos, StrPos) Funktion aus der SysUtils in dein Programm. Mindestens eine davon ist in reinem Assembler ohne aufruf von anderen Funktionen geschrieben, sodass du diese einfach kopieren kannst.

mfG
miraege228

Chewie 30. Mai 2004 12:21

Re: lstrpos ?
 
In der Shlwapi.dll gibt es einige C-String-Funktionen. Für deinen Zweck also:
strchr() für die Position eines Zeichens
strstr() für die Position eines Substrings

Pseudemys Nelsoni 30. Mai 2004 12:26

Re: lstrpos ?
 
hallo mirage,

ich bräuchte eine function die mit PChars arbeitet, gibts da keine dreikt aus der api, ohne das ich was aus den delphi units kopieren muss?

EDIT: @Chewie, guck ich mir an, danke :)

edit2: hat jede windows version diese dll?

Edit3: ich hab sie ja nichtmal in winxp -_-

Luckie 30. Mai 2004 14:50

Re: lstrpos ?
 
Zitat:

Zitat von Pseudemys Nelsoni
Edit3: ich hab sie ja nichtmal in winxp -_-

Windows2000: x:\%WinDir%\System32

Pseudemys Nelsoni 30. Mai 2004 16:18

Re: lstrpos ?
 
stimmt, wenn ich ins verzeichnis gucke ist sie da, danke.
mit der suche hats vorhin nicht geklappt :gruebel:

und wie hat chewierausgefunden das die dll solche funktionen hat? ich meine, windows hat ja bald 1000e

Luckie 30. Mai 2004 16:19

Re: lstrpos ?
 
Er hat es mal im PSDK gesehen?

Pseudemys Nelsoni 30. Mai 2004 16:36

Re: lstrpos ?
 
wo da? hast du n stichwort?

CalganX 30. Mai 2004 16:42

Re: lstrpos ?
 
Hi,
wie wäre es, wenn du im PSDK nach dem Namen der DLL suchst oder nach dem Funktionsnamen?! :gruebel:

Chris

Pseudemys Nelsoni 30. Mai 2004 16:48

Re: lstrpos ?
 
hab ich, sonst würd ich hier kaum fragen... :roll:

CalganX 30. Mai 2004 16:55

Re: lstrpos ?
 
Hi,
MSDN-Library durchsuchenstrchr() :arrow: http://search.microsoft.com/search/r...8%29&s=1&swc=4 :arrow: http://msdn.microsoft.com/library/de...ing/strchr.asp :arrow:
Zitat:

Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0
:roll:

Chris

Robert Marquardt 30. Mai 2004 17:18

Re: lstrpos ?
 
Es ist ziemlich sinnlos einfache String-Funktionen aus obskuren Windows-DLLs aufzurufen.
Niemand garantiert das die Funktionen dort exportiert bleiben.
Zusaetzlich ist das auch noch heftig ineffizient.

Was spricht dagegen die Delphi-Funktionen fuer diesen Zweck aufzurufen?
Ansonsten ist die Jedi Code Library der richtige Ort nach weiteren String-Funktionen zu suchen.

CalganX 30. Mai 2004 17:24

Re: lstrpos ?
 
Hi Robert,
grundsätzlich hast du Recht und ich will dir auch nicht widersprechen.
Das Problem bei den Delphi-Funktionen ist, dass sie in der SysUtils stehen. Und so, wie ich das verstanden habe geht es hier um ein nonVCL-Programm. Und da ist die SysUtils-Unit Gift. ;)

Chris

Pseudemys Nelsoni 30. Mai 2004 20:13

Re: lstrpos ?
 
jo stimmt, es ist eine DLL und die möchte ich natürlich kleinhalten ;)

danke nochmal.

MathiasSimmack 30. Mai 2004 20:28

Re: lstrpos ?
 
Zitat:

Zitat von Chakotay1308
Und so, wie ich das verstanden habe geht es hier um ein nonVCL-Programm. Und da ist die SysUtils-Unit Gift. ;)

Wenn ich da mal erinnern und querverweisen darf: Absturz trotz try/finally

Pseudemys Nelsoni 30. Mai 2004 20:42

Re: lstrpos ?
 
ok, sagen wir mal es ist "schlecht" diese dlls zu benutzen, welche Alternativen habe ich denn?
die C/C++ Coder müssen doch auch irgendeine "normale" Pos-function kennen/haben. gibt es denn Keine sonst?

Was ich nämlich vor habe, ist, einen PChar zu parsen. ALso der PChar sieht z.b so aus:

HKEY_LOCAL_MACHINE\\pfad\zum\key\\key\\[value]

jetzt möchte ich alle 3(oder auch 4) teile getrennt durch "\\" in einem extra PChar haben.

wie ich das hinkriege ist mir schleierhaft

Chewie 30. Mai 2004 21:00

Re: lstrpos ?
 
Zitat:

Zitat von Pseudemys Nelsoni
die C/C++ Coder müssen doch auch irgendeine "normale" Pos-function kennen/haben. gibt es denn Keine sonst?

Die haben ihre eigenen, nämlich die strxxx()-Funktionen, die ihnen in string.h verfügbar gemacht werden. Also quasi ihre eigene "Sysutils".

Pseudemys Nelsoni 30. Mai 2004 21:02

Re: lstrpos ?
 
ich hoffe nicht das ich die einbinden muss :pale:

CalganX 30. Mai 2004 21:32

Re: lstrpos ?
 
Hi,
schreibe dir doch deine eigene Funktion dafür. So schwer ist das nicht. ;)

Chris

Pseudemys Nelsoni 30. Mai 2004 21:39

Re: lstrpos ?
 
also ich hab keine idee, hast du ein beispiel parat?
Sollte natürlich schon mit den PChars gehen, ohne das ich es mit string(PChar) und PChar(string) umwandeln muss :angle2:

CalganX 30. Mai 2004 21:56

Re: lstrpos ?
 
Hi,
für Strings (in PChar kannst du das ganze ja umschreiben, funktioniert ja fast genauso [AFAIK zumindest ;)]):
Delphi-Quellcode:
function StrPos(ASubStr: string; AHaystack: string): integer;
var
  i: integer;
  sTemp: string;
begin
  for i:=1 to length(AHaystack) do begin
    sTemp := Copy(AHaystack, i, length(ASubStr));
    if sTemp = ASubStr then begin
      Result := i;
      Exit;
    end;
  end;
  Result := -1;
end;
SourceCode habe ich nicht getestet, sollte aber einwandfrei funktionieren.

Chris

Pseudemys Nelsoni 30. Mai 2004 22:06

Re: lstrpos ?
 
danke, teste ich gleich mal :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 Uhr.

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