AGB  ·  Datenschutz  ·  Impressum  







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

Alter Assembler Code

Ein Thema von freimatz · begonnen am 17. Feb 2025 · letzter Beitrag vom 18. Feb 2025
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: Alter Assembler Code

  Alt 18. Feb 2025, 12:54
Man könnte das auch einfach direkt so schreiben, denn es gibt in Winapi.Windows bereits eine explizite kleine clevere Routine, die sich um das korrekte Übergeben eines einzelnen AnsiChars an die Winapi kümmert:

Delphi-Quellcode:
function LoCase(C: AnsiChar): AnsiChar;
begin
  Result := CharLowerA(C);
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Alter Assembler Code

  Alt 18. Feb 2025, 16:03
Danke. Ich weiss nicht ob ich Dich richtig verstanden habe. In die Liste der uses habe ich "Winapi.Windows" eingefügt. Trotzdem erscheint [dcc32 Error] ...: E2003 Undeclared identifier: 'locase'.
In der unit Winapi.Windows finde ich auch diese von Dir erwähnte function LoCase nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#3

AW: Alter Assembler Code

  Alt 18. Feb 2025, 16:29
Stevie meint, du sollst deine LoCase Funktion so schreiben wie er das gezeigt hat. Das CharLowerA kümmert sich um die Interna.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#4

AW: Alter Assembler Code

  Alt 18. Feb 2025, 16:36
Boar eh

Zitat:
Delphi-Quellcode:
function CharLowerA(tch: AnsiChar): AnsiChar; overload; stdcall; inline;
begin
  Result := AnsiChar(IntPtr(CharLowerA(LPSTR(IntPtr(tch)))));
end;
Hab mich erst gewundert, wie das funktionieren soll, aber

Zitat von MSDN: CharLowerA:
Converts a character string or a single character to lowercase. If the operand is a character string, the function converts the characters in place.
Dann muß man ja garnicht erst mühevoll eine #0 anhängen.



Delphi-Quellcode:
function LoCase(C: AnsiChar): AnsiChar;
begin
  Result := AnsiChar(Pointer(CharLowerA(PAnsiChar(Pointer(C)))));
end;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:33 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