![]() |
Eine "schöne" Lösung ohne Format
Hallo Leute,
also es geht darum , dass ich die Unit SysUtils so weit wie mödlich mir ersparen möchte, deshalb suche ich nach einer möglichkeit folgendes Problem ohne Format oder IntToStr zu lösen:
Delphi-Quellcode:
Es egth darum die 4 Wert zu eine gültigen IP zusammen zu fassen , ohne die Unit SysUtils zu verwenden.
function LookupDomain(const Domain : String ) : String;
var Host : PHostEnt; Addr : array[0..3] of String; begin { Host-Daten einholen } Host := GetHostByName(PChar(Domain)); { Die Adresse formaieren } Result := Format('%d.%d.%d.%d', [Ord(Host.h_addr^[0]), Ord(Host.h_addr^[1]), Ord(Host.h_addr^[2]), Ord(Host.h_addr^[3])]); end; Danke für die hilfe^^ |
Re: Eine "schöne" Lösung ohne Format
Versuch es doch mal mit Concat und Val.
|
Re: Eine "schöne" Lösung ohne Format
Hm... Okay mit Concat kann ich die einzellstrings zusammen fügen, aber mit val kann ich nur ein string in ein integer umwandeln...
Wie hast du dir das vorgestellt? |
Re: Eine "schöne" Lösung ohne Format
Sry, hatte Val mit Str verwechselt :oops:
|
Re: Eine "schöne" Lösung ohne Format
Jop thx,
nochmal für alle :
Delphi-Quellcode:
Edit : Hach, is das ein schöne gefühl SysUtils aus der uses zu löschen 8)
function LookupDomain(const Domain : String ) : String;
var Host : PHostEnt; Addr : array[0..3] of String; Test,Test2 : Integer; begin { Host-Daten einholen } Host := GetHostByName(PChar(Domain)); { Die Adresse formaieren } Str(Ord(Host.h_addr^[0]), Addr[0]); Str(Ord(Host.h_addr^[1]), Addr[1]); Str(Ord(Host.h_addr^[2]), Addr[2]); Str(Ord(Host.h_addr^[3]), Addr[3]); { Zusammen setzen } Result := Concat(Addr[0],'.',Addr[1],'.',Addr[2],'.',Addr[3]); end; |
Re: Eine "schöne" Lösung ohne Format
Wieviel kb sparst du damit in der Echse zirka ein?
|
Re: Eine "schöne" Lösung ohne Format
es geht mir nicht um die kb sondern darum nicht die SysUtils zu verwenden... ich mag nicht so gerne sachen von anderen leuten benutzen, ich mach lieber alles selber...
aber weil du es bist :-) ohne : 93.696 Bytes mit : 93.696 Bytes ;-) |
Re: Eine "schöne" Lösung ohne Format
Dafür ist die SysUtils.pas optimiert bis zum gehtnichtmehr, und dein Code vermutlich nicht. (Okay, bei Val, Str usw. ist es was anderes, die kommen ja auch aus der System.pas)
Aber warum willst du die nicht verwenden, ich meine, du darfst sie ja uneingeschränkt verwenden. |
Re: Eine "schöne" Lösung ohne Format
Zitat:
|
Re: Eine "schöne" Lösung ohne Format
:wink:
öhm des ist stupide arbeit, bei der man ja nicht wirklich was lernen kann... es geht mir auch um den lern effeckt... und dlls kann ich einbinden^^ |
Re: Eine "schöne" Lösung ohne Format
Zitat:
a) da das Programm nicht kleiner wird, wird die SysUtils vermutlich irgendwo "automatisch" eingebunden. Vielleicht von einer anderen Unit. b) ich finde es sinnlos, schon bestehende Dinge nachzuprogrammieren. Verwende Deine zeit lieber für sinnvolle Sachen. Auch dabei kannst Du was lernen. c) die SysUtils kommt von Borland / CodeGear. Da brauchst Du leine Angst haben, dass die etwas nicht vorhergesehenes machen. Bei Fremdkomponenten sieht es anderst aus. Da will ich den Sourcecode anschauen können, damit ich sehe, was passiert. Aber nachprogrammieren würde ich das bestimmt nicht. |
Re: Eine "schöne" Lösung ohne Format
Die SysUtils kann man aus der USES-Liste raushauen, zur Laufzeit wird die aber automatisch mit eingebunden, weil Delphi das so "verlangt" (ein anderer Ausdruck ist mir nicht eingefallen).
Da der Sourcecode von Delphi aber nur gelesen (und der fehlende Verweis auf SysUtils somit ebenfalls erkannt, aber nicht korrigiert wird) und compiliert wird, kann Delphi diesen Fehler im Source nicht korrigieren, und somit wird die Unit zur Laufzeit von Delphi sowieso in die EXE reingeschnitten. Würde Delphi Fehler automatisch korrigieren, gäbe es ja das nicht:
Delphi-Quellcode:
Delphi würde es ja korrigieren.
[Fehler] Unit1.pas(28): Inkompatible Typen: 'String' und 'Integer'
Deshalb ist es ja: Zitat:
Im Prinzip ist dies dass selbe was RavenIV ausdrücken wollte, nur habe ich es näher erklärt. Hoffe ich konnte helfen, mfg St!nkeSchuh |
Re: Eine "schöne" Lösung ohne Format
Zitat:
Du verwechselst dies mit der Unit 'System'. Die ist automatisch immer mit von der Partie. Die Unit SysUtils musst Du aber einbinden wie jede andere Unit auch, wenn Du die darin enthalteten Funktionen nutzen möchtest. Ein Minimal-Programm wie das Folgende kommt gänzlich ohne die SysUtils.pas aus - und es läuft sogar erfreulich stabil:
Delphi-Quellcode:
program Project3;
begin writeln( 'wuppdi' ); end. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 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