Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RightStr, LeftStr nicht gefunden??? (https://www.delphipraxis.net/71819-rightstr-leftstr-nicht-gefunden.html)

EDatabaseError 21. Jun 2006 15:06


RightStr, LeftStr nicht gefunden???
 
In folgendem Source benötige ich den Befehl RightStr und leftStr leider kennt die mein D3 so nicht muss ich noch irgentwas in die Uses einbinden oder kann man diese function irgentwie nachmachen?

Delphi-Quellcode:
function potenziren(FWert: integer): integer;
var i: integer;
begin
  if FWert = 0 then result := 1 else result := 2; // 2^0 = 1
  for i := 1 to FWert - 1 do result := result * 2; // 2^x = 2*2*2*...
end;

function FBinToDec(FWert: String): String;
var i, ZwErg: integer;
begin
  ZwErg := 0;                                                          //Hier werden nach und nach die Ziffern Binär eingelesen
  for i := 1 to Length(FWert) do                                       //Und entsprechend Potenziert
    ZwErg := ZwErg + strtoint(FWert[i]) * potenziren(Length(FWert)-i); //Also 110 wäre (1* 2^2) + (1* 2^1) + (0* 2^0)
  Result := inttostr(ZwErg);
end;

function FBinToHex(FWert: String): String;
var ZwErgStr: String;
    ZwErgInt: Double;
    arrIndex: Integer;
const arrHex: array[0..15] of Char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
begin                                                         // Ich erläuter das am besten gleich an nem Beispiel ;) Wir haben die BinZahl 1100111110
  while Length(FWert) > 0 do                                  // Zuerst schauen wir ob überhaupt noch was im String steht, da wir abgearbeitete Ziffern 'rausschneiden'
      if Length(FWert) > 4 then                               // Wenn über 4 Ziffern vorhanden sind machen wir folgendes:
        begin
          ZwErgInt := strtoint(FBinToDec(RightStr(FWert,4))); // Wir Rechnen die hintersten 4 Ziffern (also 1110 im bsp) ab und lassen sie in Dezimal umschreiben ( also 14)
          FWert := LeftStr(FWert,Length(FWert)-4);            // Jetzt schneiden wir die 4 Ziffern von FWert ab, da wir die ja schon verarbeitet haben
          Result := arrHex[Trunc(ZwErgInt)] + Result;         // Nun schauen wir in unserem Array (siehe functions-konstante) nach, was an stelle bsp.: 14 steht: ein E
        end                                                   // Damit haben wir unsere Letzte Ziffer ausgerechnet. Das machen wir nun solange bis wir < 4 Zeichen in FWert haben.
      else                                                    // Wenn wir damit fertig sind steht also im ergebnis schonmal 3E und im string noch '11'
        begin
          ZwErgInt := strtoint(FBinToDec(FWert));             // Hier pasiert nun eigentlich das gleiche, nur dass wir
          FWert := '';                                        // Nun den String leeren können und
          Result := arrHex[Trunc(ZwErgInt)] + Result;         // Nicht 4 Stellen sondern halt nur den Rest umwanden...
        end                                                   // Wir erhalten im beispiel also die letzte stelle (11bin = 3h)
end;
Mfg
Tobi

Zacherl 21. Jun 2006 15:26

Re: RightStr, LeftStr nicht gefunden???
 
Was machen die Funktionen? Ich kenn die gar nicht, da ich sie auch nie brauchte ...

diComm 21. Jun 2006 15:29

Re: RightStr, LeftStr nicht gefunden???
 
Diese Funktionen lesen eine bestimmte Anzahl Zeichen von Links resp. Rechts aus einem String.

Binde mal die Unit StrUtils mit ein, weiss nicht ob sie bei Delphi 3 dort sind, aber bei Delphi 7 waren sie in dieser Unit zu finden

Hawkeye219 21. Jun 2006 15:38

Re: RightStr, LeftStr nicht gefunden???
 
Die Funktionen gibt es erst seit Delphi 6. Eine Alternative befindet sich hier.

Gruß Hawkeye

Zacherl 21. Jun 2006 16:01

Re: RightStr, LeftStr nicht gefunden???
 
Mal Copy versucht?

Copy(StringVar, 1, 3): Dies liest vom 1. Zeichen an 3 Zeichen aus.
Copy(StringVar, length(StringVar) -3, 3): Liest von hinten 3 Zeichen.

Florian

Hawkeye219 21. Jun 2006 16:27

Re: RightStr, LeftStr nicht gefunden???
 
Florian, wie lauten somit die letzten 3 Zeichen deines Vornamens?

vlees91 21. Jun 2006 16:51

Re: RightStr, LeftStr nicht gefunden???
 
ian ??

Khabarakh 21. Jun 2006 16:56

Re: RightStr, LeftStr nicht gefunden???
 
:stupid:

Laut ihm selbst: ria

vlees91 21. Jun 2006 16:57

Re: RightStr, LeftStr nicht gefunden???
 
du musst nbatürlich auch als namen "Florian " nehmen :stupid:

EDatabaseError 21. Jun 2006 17:06

Re: RightStr, LeftStr nicht gefunden???
 
es wäre doch theoretisch möglich mit D05 PE eine DLL zu erstellen die die aufgabe übernimmt...oder

himitsu 21. Jun 2006 17:35

Re: RightStr, LeftStr nicht gefunden???
 
Copy(StringVar, length(StringVar) - 2, 3) ... ihr solltet euch langsam mal merken, daß Strings nicht mit 0 beginnen !!

@vlees91: ich hoffe mal das mit dem Leerzeichen (#9) war nur ein Witz :shock:


also:
Delphi-Quellcode:
LeftStr(S, i)  = Copy(S, 1, i)
RightStr (S, i) = Copy(S, Length(S) - i + 1, i)

EDatabaseError 21. Jun 2006 17:47

Re: RightStr, LeftStr nicht gefunden???
 
ok teste ich

Zacherl 21. Jun 2006 17:54

Re: RightStr, LeftStr nicht gefunden???
 
Zitat:

ihr solltet euch langsam mal merken, daß Strings nicht mit 0 beginnen !! Weiß ich, sonst hätte ich kaum das:
Zitat:

Copy(StringVar, 1, 3)
geschrieben :wink: Weiß auch nicht warum ich das bei Copy ständig mache ...
Der zweite Ansatz war zugegeben falsch.
Muss halt
Delphi-Quellcode:
Copy(StringVar, length(StringVar) -2, 3)
statt
Delphi-Quellcode:
Copy(StringVar, length(StringVar) -3, 3)
heißen.

Florian

EDatabaseError 21. Jun 2006 19:58

Re: RightStr, LeftStr nicht gefunden???
 
Zitat:

Zitat von himitsu
Copy(StringVar, length(StringVar) - 2, 3) ... ihr solltet euch langsam mal merken, daß Strings nicht mit 0 beginnen !!

@vlees91: ich hoffe mal das mit dem Leerzeichen (#9) war nur ein Witz :shock:


also:
Delphi-Quellcode:
LeftStr(S, i)  = Copy(S, 1, i)
RightStr (S, i) = Copy(S, Length(S) - i + 1, i)

???
Delphi-Quellcode:
FWert := Copy(FWert,Length(FWert) - Length(FWert)-4 + 1,Length(FWert)-4);
hier war ein Leftstr drin

Funkt leider so nicht.

EDatabaseError 21. Jun 2006 21:24

Re: RightStr, LeftStr nicht gefunden???
 
Hab jetzt herausgefunden:
Dez 49 ist laut Umrechnung Hex 3C ist aber nicht richtig da 49 $31 ist...

Why?

EDatabaseError 22. Jun 2006 12:23

Re: RightStr, LeftStr nicht gefunden???
 
*push*

kann sich nochmal jemand das LeftStr ansehen. Kennt meine D Hilfe nicht...und ich hab wirklich keine Lust ne DLL zu schreiben.

Die Muhkuh 22. Jun 2006 12:26

Re: RightStr, LeftStr nicht gefunden???
 
Hi,

ich kann nur himitsu wiederholen:

Delphi-Quellcode:
function LeftStr(const Text: String; const Count: Integer): String;
begin
  Result := Copy(Text, 1, Count);
end;

EDatabaseError 22. Jun 2006 12:29

Re: RightStr, LeftStr nicht gefunden???
 
:oops: meinte rightstr denn himitsus seine right sieht imho komisch im bezug auf s.o. aus.

Die Muhkuh 22. Jun 2006 12:31

Re: RightStr, LeftStr nicht gefunden???
 
Delphi-Quellcode:
function RightStr(const Text: String; Count: String): String;
begin
  Result := Copy(Text, Length(Text) + 1 - Count, Count);
end;

EDatabaseError 22. Jun 2006 12:38

Re: RightStr, LeftStr nicht gefunden???
 
:gruebel: wenn du nix geändert hast... ich hab jetzt deine functionen genommen und die copys wieder durch right und leftstr ersetzt. funktioniert! danke!

Die Muhkuh 22. Jun 2006 12:40

Re: RightStr, LeftStr nicht gefunden???
 
Hi,

vielleicht hattest du vorhin nur ein - mit einem + vertauscht oder umgekehrt und es ging deswegen nicht.

EDatabaseError 22. Jun 2006 12:41

Re: RightStr, LeftStr nicht gefunden???
 
maybe hauptsache es geht :-)

Khabarakh 22. Jun 2006 13:01

Re: RightStr, LeftStr nicht gefunden???
 
Zitat:

Zitat von EDatabaseError
???
Delphi-Quellcode:
FWert := Copy(FWert,Length(FWert) - Length(FWert)-4 + 1,Length(FWert)-4);
Funkt leider so nicht.

Und da wunderst du dich noch? Was wird wohl Length(x) - Length(x) ergeben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 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