AGB  ·  Datenschutz  ·  Impressum  







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

Altes Programm kompilieren

Ein Thema von Runningdog · begonnen am 9. Jan 2024 · letzter Beitrag vom 11. Jan 2024
Antwort Antwort
Seite 2 von 3     12 3      
Runningdog

Registriert seit: 9. Jan 2024
11 Beiträge
 
#11

AW: Altes Programm kompilieren

  Alt 10. Jan 2024, 22:36
Delphi-Quellcode:
Function DeCode(Wort:Char):String;

Begin
  Case Wort Of
  '1','A' : DeCode:= 'Bar';
  '2','B' : DeCode:= 'Einzug';
  '3','C' : DeCode:= 'Scheck';
  '4','D' : DeCode:= 'Kartenzahlung';
  '5','E' : DeCode:= 'Überweisung';
  '6','F' : DeCode:= 'Dauerauftrag'
  Else DeCode:= 'Unbekannt';
  End;
End;

Geändert von TBx (11. Jan 2024 um 03:58 Uhr) Grund: DElphi-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Altes Programm kompilieren

  Alt 10. Jan 2024, 22:46
Dann musst du nur Wort:Char in Wort:AnsiChar ändern.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Runningdog

Registriert seit: 9. Jan 2024
11 Beiträge
 
#13

AW: Altes Programm kompilieren

  Alt 11. Jan 2024, 10:27
Dann musst du nur Wort:Char in Wort:AnsiChar ändern.
Hat AnsiChar nicht 2 Byte anstelle von Char (meine ich gelesen zu haben)?
Dann lassen sich leider sämtliche Dateien nicht mehr einlesen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Altes Programm kompilieren

  Alt 11. Jan 2024, 10:46
Hallo und Willkommen zurück in der Delphi-Welt!

Das Leben wird oft relativ einfach wenn du nur "docwiki [Suchwort]" in die Internet-Suchmaschine deines Vertrauens eingibst.

Für "docwiki AnsiChar" landet man direkt auf der offiziellen Delphi-Dokumentation:
https://docwiki.embarcadero.com/Libr...ystem.AnsiChar

Die sagt dann direkt:
Zitat:
Repräsentiert einen 1 Byte großen (8 Bit) Zeichentyp.

AnsiChar-Werte stellen auf Byte-Größe (8 Bit) ausgerichtete Zeichen dar. (...)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Altes Programm kompilieren

  Alt 11. Jan 2024, 11:09
Hat AnsiChar nicht 2 Byte anstelle von Char (meine ich gelesen zu haben)?
Char ist seit Delphi 2009 Unicode und damit sind das 2 Byte, während AnsiChar nach wie vor 1 Byte hat. Shortstrings wie in deinem Record sind weiter AnsiStrings, von daher passt das.

Dein case würde aber mit beidem funktionieren. Insofern kannst du AnsiChar für die Funktion verwenden oder das Zeichen mit Decode(Char(AktZeiger^.Satz.Typ[1])) vorher umwandeln.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Runningdog

Registriert seit: 9. Jan 2024
11 Beiträge
 
#16

AW: Altes Programm kompilieren

  Alt 11. Jan 2024, 11:32
Hat AnsiChar nicht 2 Byte anstelle von Char (meine ich gelesen zu haben)?
Char ist seit Delphi 2009 Unicode und damit sind das 2 Byte, während AnsiChar nach wie vor 1 Byte hat. Shortstrings wie in deinem Record sind weiter AnsiStrings, von daher passt das.

Dein case würde aber mit beidem funktionieren. Insofern kannst du AnsiChar für die Funktion verwenden oder das Zeichen mit Decode(Char(AktZeiger^.Satz.Typ[1])) vorher umwandeln.
Ok, werde ich probieren. Dann gibt es hier noch eine Fehlermeldung, die offensichtlich mit der Chr-Funktion zusammenhängt.

AktZeiger^.Satz.Typ[1]:= Chr(Ord(AktZeiger^.Satz.Typ[1])+16);

Da kommt auch wieder der Fehlercode Inkompatible Type: AnsiChar und Char

Übrigens: Wenn ich die Fehlerzeilen auskommentiere (die Funktionen sind zum Testen nicht so wichtig) läuft das Programm das heißt, das heißt, daß ich dann die fehlerhafte Sortierfunktion in Angiff nehmen kann, die seit 2024 nicht mehr funktioniert. Da werde ich mich wohl wieder richtig reinlesen müssen in Delphi. Jetzt wo ich weiß, daß ich es wieder kompilieren kann. Und ich bedanke mich recht herzlich bei den Helfern hier im Forum, man hat es nach so vielen Jahren ja wirklich nicht leicht.

Geändert von Runningdog (11. Jan 2024 um 11:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Altes Programm kompilieren

  Alt 11. Jan 2024, 11:44
In der anderen Richtung sollte AnsiChar statt Chr funktionieren. Du kannst auch AnsiChar(Chr(... verwenden, aber die Umwandlung in einen Char ist dort nicht nötig.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Runningdog

Registriert seit: 9. Jan 2024
11 Beiträge
 
#18

AW: Altes Programm kompilieren

  Alt 11. Jan 2024, 12:06
In der anderen Richtung sollte AnsiChar statt Chr funktionieren. Du kannst auch AnsiChar(Chr(... verwenden, aber die Umwandlung in einen Char ist dort nicht nötig.
Tschuldige, aber das habe ich jetzt nicht verstanden. Aber wenn ich mir die Prozedur mal nach so vielen Jahren ansehe, dann geht das hier nur um Groß- bzw- Kleinschreibung, wie gesagt, wenn ich das auskommentiere, wird das Programm kompiliert. Könntest Du mir vielleicht nur noch kurz erklären, wie ich die Zeile

AktZeiger^.Satz.Typ[1]:= Chr(Ord(AktZeiger^.Satz.Typ[1])+16);

umformulieren müßte?


Hier man die ganze Prozedur:



Begin
If AktZeiger <> Nil Then
Begin
If Ord (AktZeiger^.Satz.Typ[1]) < 58 Then
Begin
AktZeiger^.Satz.Typ[1]:= Chr(Ord(AktZeiger^.Satz.Typ[1])+16);
StringGrid1.Cells[0,StringGrid1.Row]:= C_Kontrolliert;
End Else
Begin
AktZeiger^.Satz.Typ[1]:= Chr(Ord(AktZeiger^.Satz.Typ[1])-16);
StringGrid1.Cells[0,StringGrid1.Row]:= '';
End;
GlobalChanged:= True;
Form1.StatusBar1.Panels[0].Text:= 'Daten geändert';
DispAktZeiger;
FillStringGrid(Sender); (* Damit Markierung angezeigt wird *)
End;
End;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Altes Programm kompilieren

  Alt 11. Jan 2024, 12:07
Das habe ich doch geschrieben, AnsiChar statt Chr:
Delphi-Quellcode:
AktZeiger^.Satz.Typ[1]:= AnsiChar(Ord(AktZeiger^.Satz.Typ[1])+16);
// oder
AktZeiger^.Satz.Typ[1]:= AnsiChar(Chr(Ord(AktZeiger^.Satz.Typ[1])+16));
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Runningdog

Registriert seit: 9. Jan 2024
11 Beiträge
 
#20

AW: Altes Programm kompilieren

  Alt 11. Jan 2024, 12:13
Hat geklappt, danke!

AktZeiger^.Satz.Typ[1]:= ansiChar(Ord(AktZeiger^.Satz.Typ[1])+16);

Google hatte gar nicht ausgeworfen, daß es diese Funktion gibt...
War kurz auf dem Schlauch gestanden.
  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 21:48 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