Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: Dezimalwerte in Hexadezimalwerte

Dezimalwerte in Hexadezimalwerte 3 Monate 1 Woche her #2837

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
Hallo Herr Stark,

mit Interesse habe habe ich letzte Woche den Thread zun Konvertierung von Ansi in Hex gelesen.
Ich habe seit längerem eine Aufgabe am laufen, die eine ähnliche Aufgabenstellung hat.
In einem Readfeld sind 126 Zeihen (Dezimalcodes zu 42 Stellen). Diese brauche ich im Write als Hexadezimalcode.
Ich habe mir vor einem Jahr folgende Lösung zusammengebastelt:
1. Mit Substring die 42 Stellen an den entsprechenden Stellen auslesen.
2. Mit Replace aus einer erstellten Tabelle (im Anhang) die Dec.Werte in Hex.-Werte ersetzen.
3. Mit Append wieder zusammenfügen und in eine Writespalte schreiben.
Bei zum Teil über 1 Mio. Datensätze ist dies z.T. eine Zeitraubende Angelegenheit.
Liese sich dies nicht auch über ein kurzes Netscript einfacher erledigen?

Danke schon einmal für Ihre Antwort




Ralf B.
Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Dezimalwerte in Hexadezimalwerte 3 Monate 1 Woche her #2838

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Hallo Herr Birk,

ja, mit dem .NET Script Heater geht „fast“ alles :)

Ich habe Ihnen mal ein kleines Beispiel Skript erstellt, das aus dem Feldinhalt alle 3 Zeichen den vorhandenen Dezimalwert in einen als Hexadezimal formatierte Zeichenkette wieder ausgibt. Das Sie geschrieben haben, dass In Ihrem Feldinhalt auch Zeilenumbrüche vorhanden sein können, unterstützt das Skript das auch und gibt in dem Fall natürlich auch die vorhanden Zeilenumbrüche wieder mit aus.

Beispiel Skript
public object DoWork()
{
  if (InValues.Length != 1)
    throw new Exception("1 Eingangsparameter erwartet!");

  string content = (string)InValues[0].GetString();

  StringBuilder sb = new StringBuilder();

  // über alle Zeilen des Feldinhaltes
  foreach(string line in content.Split('\n'))
  {
    // evtl. Zeilenumbruch glätten (Windows/Unix)
    string s = line.Replace("\r", "");

    // falls mehrere Zeilen im Feldinhalt pro Zeile wieder einen Zeilenumbruch ausgeben.
    if (sb.Length != 0)
      sb.Append(Environment.NewLine);

    int pos = 0;
    while (pos < s.Length)
    {
      string dec = String.Empty;

      // die nächste 3 Stellen bzw. den Rest aus der Zeichenkette holen
      if (s.Length - pos >= 3)
	  dec = s.Substring(pos, 3);
      else
        dec = s.Substring(pos);

      // Zeichenfolge in eine Zahl umwandeln
      int i = Convert.ToInt32(dec);

      // Zahl als HEX formatierte Zeichenkette ausgeben.
      string hex = i.ToString("X");
                    
      // evtl. führende 0 an den HEX Wert anfügen
      sb.Append(hex.PadLeft(2, '0'));

      // pos um drei stellen weiter setzen
      pos += 3;
    }
  }

  // Hexadezimal formatierte Zeichenkette zurückgeben
  return sb.ToString();
}

Im Anhang finden Sie das Beispiel dazu.

PS: Sie können den Wust an Heatern und Verbindungen recht einfach und übersichtlich über Layer anordnen. Gehen Sie z.B. mal auf dem String Append Heater mit der rechten Maustaste und wählen aus dem Kontextmenü den Eintrag „Auf neuen Layer verschieben“ und schauen Sie sich an was passiert :)

Dateianhang:

Dateiname: decimal-he...eren.zip
Dateigröße:2 KB
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 3 Monate 1 Woche her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Dezimalwerte in Hexadezimalwerte 3 Monate 1 Woche her #2839

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
Hallo Herr Stark,

das ganze sieht in der Tat relativ unübersichtlich aus, ist aber schon ca 2 Jahre alt und stammt noch aus meinen ersten Versuchen mit dem Flowheater.
Mittlerweile verwende ich zur Übersichtlichkeit natürlich Layers.
Ich werde versuchen, ob ich am Wochenende dazu komme, den .fhd auf Ihre Lösung umzustellen.

Vielen Dank nochmal und ein sonniges Wochenende

Gruß Ralf B.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.079 Sekunden