AGB  ·  Datenschutz  ·  Impressum  







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

Lowercase Funktion?

Ein Thema von Pseudemys Nelsoni · begonnen am 23. Jun 2005 · letzter Beitrag vom 23. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Lowercase Funktion?

  Alt 23. Jun 2005, 20:06
Hallo,

ich möchte eine Lowercase Funktion schreiben, die ich ohne die VCL verwenden kann.

Bis jetzt habe ich es so:

Delphi-Quellcode:
function StrLower(Str: PChar): PChar;
var
  pIdx: PChar;
begin
  GetMem(Result, SizeOf(Str));
  pIdx := @Str[1];
  while (pIdx^ <> #0) do
  begin
    if pIdx^ in ['A'..'Z'] then
      pIdx^ := Chr(Ord(pIdx^)+32);
    Inc(pIdx);
  end;
end;

Nur ist das richtig? Ich meine, müsste ausserhalb der Funktion nicht dann auch noch FreeMem() aufgerufen werden?
Mario
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 20:07
Wäre eine gute Idee, , und vergiss die deutschen Umlaute nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 20:09
Moin Mathias,

könnte man das auch noch anders lösen? *g*

So das ich die Funktion normal verwenden kann, ohne das ich da in meinem Hauptprogramm noch was löschen muss?
Ich meine wenn man Funktionen aus der Windows.pas, wie lstrcmpi() etc aufruft, muss man ja nachher auch nichts freigeben


@Edit: @Umlaute: Stimmt, fast vergessen *g*...Gibt es sonst noch irgendwelche Zeichen die man beachten sollte?
Mario
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 20:11
in der unit windows gibts dafür "CharLowerBuff" Diese wird auch von AnsiLowerCase verwendet.
Da du die Enterprise hast solltest du ja auch den source haben..
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 20:11
Delphi-Quellcode:
function LowerCase(const S: string): string;
var
  Ch: Char;
  L: Integer;
  Source, Dest: PChar;
begin
  L := Length(S);
  SetLength(Result, L);
  Source := Pointer(S);
  Dest := Pointer(Result);
  while L <> 0 do
  begin
    Ch := Source^;
    if (Ch >= 'A') and (Ch <= 'Z') then Inc(Ch, 32);
    Dest^ := Ch;
    Inc(Source);
    Inc(Dest);
    Dec(L);
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 20:13
Ich habe mal in meine Unit geguckt. Da steht:
Delphi-Quellcode:
function LowerCase(const s: string): string;
var
  i : integer;
begin
  Result := '';

  if(length(s) > 0) then
  begin
    SetLength(Result,length(s));
    for i := 1 to length(s) do
      case s[i] of
        'A'..'Z','Ä','Ö','Ü':
          Result[i] := CHR(BYTE(s[i]) + 32);
        else
          Result[i] := s[i];
      end;
  end;
end;
Das geht sicher auch noch besser.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 20:17
wie ich schon geschrieben hab gehts auch einfacher, einfach mal den Quelltext von "AnsiLowerCase" anschauen
Delphi-Quellcode:
function LowerCase(AStr: String): String;
begin
  SetString(result, PChar(AStr), Length(AStr));
  CharLowerBuff(PChar(result), Length(result));
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#8

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 20:46
Moin,

danke für eure Tipps.

@SirThornberr, müsste das:

CharLowerBuff(PChar(result), Length(result)); nicht:

CharLowerBuff(PChar(result), Length(result)+1); heissen? also für das #0zeichen?
Mario
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 20:48
nen muss es nicht, schließlich soll das #0 nicht mit ins lowercase einfließen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Lowercase Funktion?

  Alt 23. Jun 2005, 21:42
In welcher Uni ist denn CharLowerBuffer() drinn?
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 02:10 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