AGB  ·  Datenschutz  ·  Impressum  







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

QBasic zu Delphi

Ein Thema von citybreaker · begonnen am 18. Jul 2009 · letzter Beitrag vom 19. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
citybreaker
(Gast)

n/a Beiträge
 
#1

QBasic zu Delphi

  Alt 18. Jul 2009, 17:18
Hallo!

Ich hab nen altes QBaisc Programm auf der Arbeit rausgekramt, dass ich auf einen aktuellen stand
bringen möchte. Vorzugsweise mit Delphi.

Allerdings bin ich mir bei einigen Zeilen noch etwas unsicher.

Ist bei dem select case teil AND gleichwertig mit + ?
Code:
' QBasic
SELECT CASE (wert AND 240) / 16   
CASE 0 TO 9
  ascii$ = CHR$((wert AND 240) / 16 + 48)
CASE 10 TO 15
  ascii$ = CHR$((wert AND 240) / 16 + 55)
END SELECT
Delphi-Quellcode:
// Delphi
case (wert + 240) of
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9: ascii = Chr((wert + 240) div 16 + 48)
  10, 11, 12, 13, 14, 15: ascii = Chr((wert + 240) div 16 + 55)
Gibt es eine vergleichbare Funktion wie mid() in Delphi oder muss ich mit
selber etwas stricken?
Code:
' Hier werden die angebenen Zeichen durch die Zeichen hinter dem = ersetzt
MID$(out$, 5 + pgrcnt * 12, 1) = CHR$(LEN(out$) - INT(LEN(out$) / 256) * 256)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.352 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: QBasic zu Delphi

  Alt 18. Jul 2009, 17:25
And ist genau wie in Delphi eine logische oder bitweise verundung. Vermutlich kannst du das einfach in Delphi ganz genauso schreiben.

In Delphi gibts nur Insert, d.h. Mid musst du wohl selbst machen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

Re: QBasic zu Delphi

  Alt 18. Jul 2009, 18:44
Code:
0 TO 9
Kannst du in Delphi einfach so schreiben:
Delphi-Quellcode:
case zahl of
  0..9: tuwas1;
  10..15: tuwas2;
end;
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: QBasic zu Delphi

  Alt 18. Jul 2009, 18:52
man braucht nichtmal ein CASE

if zahl <= 9 then tuwas1 else tuwas2; also
Delphi-Quellcode:
if (wert and 240) div 16 <= 9 then
  ascii := CHR((wert and 240) div 16 + 48)
else
  ascii := CHR((wert and 240) div 16 + 55);
allerdings mach ich es meist mehr so
Delphi-Quellcode:
const cHexChars: array[0..15] of Char = '0123456789ABCDEF';

ascii := cHexChars[(wert and 240) div 16];
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: QBasic zu Delphi

  Alt 18. Jul 2009, 18:53
Zitat von jaenicke:
In Delphi gibts nur Insert, d.h. Mid musst du wohl selbst machen.
"Mid$(str$, index%, 1)" kann durch "str[index] := " ersetzt werden
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: QBasic zu Delphi

  Alt 18. Jul 2009, 19:43
Copy() arbeitet ziemlich gleich wie Mid$.
fork me on Github
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: QBasic zu Delphi

  Alt 18. Jul 2009, 19:45
Zitat von sx2008:
Copy() arbeitet ziemlich gleich wie Mid$.
Jein, MID$() ersetzt einen Teil eines Strings, Copy() erzeugt einen neuen
Markus Kinzler
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#8

Re: QBasic zu Delphi

  Alt 18. Jul 2009, 19:51
Danke für die Tipps. Hab mir die Mid Funktion jetzt mit String Replace nachgebaut.
Das mit der case Anweisung 0..9 ist auch zimlich praktisch.

Allerdings habe ich herrausgefunden das "+" und "and" jeweils ein anderes
Ergebnis bringen, dachte das wäre so zimlich egal, ob ich + oder and hinschreibe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: QBasic zu Delphi

  Alt 18. Jul 2009, 20:07
+ addiert
AND verknüpft die Bits (als Binäroperator)

also da kann man sich denken, daß es nicht das Selbe macht.

oftmals benutzen viele OR statt +
was manchmal bei Binäroperationen auch funktioniert, aber eben nicht immer (also wenn man z.B. ein BIT setzen will)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: QBasic zu Delphi

  Alt 19. Jul 2009, 00:44
OR liefert dann das selbe Ergebnis wie +, wenn man nur Zweierpotenzen verknüpft. Aber auch nur, wenn alle Operanden dabei voneinander verschieden sind! Man sieht ab und an so ein + beim Zusammenbasteln von Flag-Feldern, bei denen einzelne Bits in einem Integer-Wert (zurück-)gesetzt werden, das ist aber semantisch Blödsinn, und kann ggf. auch seltsame ungewollte Ergebnisse liefern.

"AND 240" ist binär "AND 11110000". D.h. dass von einem Byte nur die obersten 4 Bits betrachtet werden sollen. Das ist durch keinen der üblichen mathematischen Operatoren ausdrückbar, so lange man nicht genau weiss wie die unteren 4 Bits gesetzt sind (dann könnte man ihre Werte subtrahieren, ist aber auch verkorkster Stil den kein normaler Mensch auf Anhieb verstehen wird).


\\Edit: Das "div 16" kannst du konsequenterweise hier auch durch den binäroperator SHR (shift right) ersetzen. N div 16 = N shr 4. Das div ist an dieser Stelle ähnlich schlechter Stil wie das o.g. Verwenden von mathematischen Operatoren für logische Operationen - es ist eigentlich genau das

\\Edit2: Das letzte "+" in diesen Zeilen ist dagegen richtig! Da scheint eine Konvertierung zwischen Character-Tabellen stattzufinden, und in diesem Zusammenhang ist das mathem. + korrekt. Also nicht auf die Idee kommen daraus nun nen "OR" zu machen
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 01:00 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