AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Verhindern, dass eine Funktion zwei mal den gleichen Parameter nutzt
Thema durchsuchen
Ansicht
Themen-Optionen

Verhindern, dass eine Funktion zwei mal den gleichen Parameter nutzt

Ein Thema von Alallart · begonnen am 2. Sep 2025 · letzter Beitrag vom 3. Sep 2025
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.110 Beiträge
 
Delphi 12 Athens
 
#11

AW: Verhindern, dass eine Funktion zwei mal den gleichen Parameter nutzt

  Alt 3. Sep 2025, 05:23
Der Leerstring ist nicht so schlimm, finde ich, drum diesen Ausschluß,
Dann schlägt die Prüfung aber nie an, weil der String an der Stelle immer leer ist. Den Fall nil muss man nicht abfangen, denn der Zielstring kann nie nil sein, oder?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.522 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Verhindern, dass eine Funktion zwei mal den gleichen Parameter nutzt

  Alt 3. Sep 2025, 07:44
Also für mich wäre definitiv die Lösung eine echte Funktion zu machen ohne var und out. Das Funktionsergebnis wäre in diesem Fall dann ein record mit dem Byte und string. In anderen Fällen würde ich statt einem record ein Daten-Transfer-Objekt nehmen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verhindern, dass eine Funktion zwei mal den gleichen Parameter nutzt

  Alt 3. Sep 2025, 10:08
Dann schlägt die Prüfung aber nie an, weil der String an der Stelle immer leer ist.
Der Eingangs-String (Str) ist immer leer, jener, welcher auf '' geprüft wurde?
Dachte Base64Str kann/ist/darf leer?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.110 Beiträge
 
Delphi 12 Athens
 
#14

AW: Verhindern, dass eine Funktion zwei mal den gleichen Parameter nutzt

  Alt 3. Sep 2025, 20:40
Dann schlägt die Prüfung aber nie an, weil der String an der Stelle immer leer ist.
Der Eingangs-String (Str) ist immer leer, jener, welcher auf '' geprüft wurde?
Dachte Base64Str kann/ist/darf leer?
Beispiel:
Delphi-Quellcode:
function StrToBase64(Str: string; out Base64Str: string): Byte;
begin
  ShowMessage(Str);
end;

procedure Test;
var
  a: string;
begin
  a := 'Test';
  StrToBase64(a, a);
end;
Es wird ein Leerstring angezeigt. Das liegt daran, dass der generierte Code bei einem out-String so aussieht, siehe UStrClr:

screenshot-2025-09-03-213834.png
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verhindern, dass eine Funktion zwei mal den gleichen Parameter nutzt

  Alt 3. Sep 2025, 21:11
dass der generierte Code bei einem out-String so aussieht, siehe UStrClr:
siehe #10, aber auch schon #8

Und es ist nicht nur vorher was anders (das Clear), sondern auch intern.
Beim Aufruf das Clear der reingegeben Variablen, womit sie NIL wird,
auch intern nochmal den Parameter auf NIL gestezt, auch wenn er schon NIL ist, vermutlich falls es von Extern kommt (nicht durch Delphi aufgerufen).
One das Clear vorher würde das zeite NIL dann ein Speicherleck erzeugen

Außerdem ist es egal ob (out R: string; S: string) oder (S: string; out R: string)
https://embt.atlassian.net/servicede...tal/1/RSS-4013
Zumindest hat Emba das extrem schnell es auf Open gestellt (bzw. sie haben überhaupt mal reagiert).
Vielleicht nehmen sie das Problemchen ernst und machen da schnell was? Wäre ja auch nur eine winzige Prüfung und Logausgabe.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Sep 2025 um 21:16 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:00 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