AGB  ·  Datenschutz  ·  Impressum  







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

Funktion um Stringlänge zu ermitteln

Ein Thema von Airblader · begonnen am 7. Apr 2005 · letzter Beitrag vom 8. Apr 2005
Antwort Antwort
Seite 2 von 3     12 3      
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#11

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 13:11
Hallo Luckie,

per definition ist ein Delphi-String nicht durch ein null-Zeichen begrenzt sondern durch die Längenbeschreibung am Anfang des Datenbereichts. Mir ist bewusst, dass er Gründen der vereinfachten Kompatibilität mit einem null-Zeichen endet, um Ausdrücke der Art
PChar(AString) ohne eine erneute Kopie zu realisieren, aber Deine Implementierung von mylength ist kein Ersatz für Length, weil es Fälle gibt, in denen die Rückgabewerte voneinander abweichen können:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  AString = 'a delphi string can contain '#0' several '#0' null characters';
begin
  Assert( Length(AString) = mylength(AString) );
end;
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 13:21
Jupp. Stimmt, aber auf die Schnelle ist mir nichts besseres eingefallen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#13

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 13:36
Ich erwähne, dass es auch nicht um die Funktion direkt geht, es ging eig. nur darum, um ihm zu zeigen,
wie das mit eigenen Funktionen, Parametern und Rückgabewerten geht
Die eigentliche Idee war ja auf der meines Freundes basiert, ich hatte sie zuerst nur so umgesetzt

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#14

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 15:35
Aber versucht mal, per Code auf MeinString[0] zuzugreifen.
Das mag der Compiler nicht
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 15:46
Zitat von Ultimator:
Aber versucht mal, per Code auf MeinString[0] zuzugreifen.
Das mag der Compiler nicht
Stimmt. Habe ich aber auch schon ein paar Jahre nicht mehr so gemacht.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 15:56
mit nem statischen string geht das aber, siehe:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string[255];
begin
  s := 'blah';
  Showmessage(IntToStr(Byte(s[0])));
end;
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#17

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 16:02
Ein "normaler" Pascal-String hat am Anfang soweit ich weiß ein DWORD als Längenbeschreibung, wieso nicht das auslesen?

Delphi-Quellcode:
function MyLen(S: string): Integer;
begin
  Result := PDWORD(Integer(S)-4)^;
end;
Edit: Da war ein Adressoperator zu viel
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 16:05
das gibt aber falsche ergebnisse
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#19

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 16:07
Zitat von Dax:
Ein "normaler" Pascal-String hat am Anfang soweit ich weiß ein DWORD als Längenbeschreibung, wieso nicht das auslesen?

Delphi-Quellcode:
function MyLen(S: string): Integer;
begin
  Result := PDWORD(Integer(@S)-4)^;
end;
Das müsste man nun aber als OT beschreiben.
Mein Kumpel weiss nichtmal wie man eigene Funktionen deklariert, dann wird er ja schreien bei dem Einzeiler
(da bin ich übrigens auch kurz davor *gg*)

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#20

Re: Funktion um Stringlänge zu ermitteln

  Alt 7. Apr 2005, 16:09
AnsiStrings benutzen ja jetzt 4 Bytes = 1 Integer um die Länge zu speichern, deswegen geht s[0] nicht.

So ähnlich geht es aber immer noch:

Delphi-Quellcode:
function Len(const s: string): Integer;
begin
  if Pointer(s) = nil then
    Result := 0
  else
    Result := PInteger(Cardinal(s) - 4)^;
end;
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 11:20 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