AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Thema durchsuchen
Ansicht
Themen-Optionen

DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

Ein Thema von DRPEnc · begonnen am 22. Mär 2004 · letzter Beitrag vom 23. Mär 2004
Antwort Antwort
Seite 1 von 3  1 23      
DRPEnc

Registriert seit: 20. Feb 2004
Ort: Noch unterm Mond
126 Beiträge
 
#1

DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 22. Mär 2004, 23:58
Ich bins wieder.

Hab ein kleines Problem. Ich hab ein speziäles Format erstellt.
Nun wollte ich zu dieses Format in verschiedene Edits auslesen.

Hier mal das Format:

Code:
#####Intra.drpqmat#######
 8,16,19,22,26,27,29,34,
16,16,22,24,27,29,34,35,
19,22,26,27,29,34,35,38,
22,22,26,27,29,34,35,40,
22,26,27,29,32,35,40,48,
26,27,29,32,35,40,48,50,
26,27,29,35,40,48,50,60,
27,29,35,40,48,50,60,62
(Die erste Zeile ist nicht vorhanden!)

Code:
#####Inter.drpqmat#######
16,20,24,28,32,36,40,44,
20,24,28,32,36,40,44,48,
24,28,32,36,40,44,48,52,
28,32,36,40,44,48,52,56,
32,36,40,44,48,52,56,58,
36,40,44,48,52,56,58,60,
40,44,48,52,56,58,60,62,
44,48,52,56,58,60,62,62
Diese Zwei Dateien sollen ausgelesen werden
und jede Zahl kommt in eine andere Edit.
Beim speichern sollte dann wieder das
Format ausgegeben werden.

So sieht der Teil des Programms aus:

http://rj-elektronik.de/avideo/images/MatED.gif

Die Edits sind wie folgt nummerriert:

1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
...
57 58 59 60 61 62 63 64

und

65 66 67 68 69 70 71 72
...
121 122 123 124 125 126 127 128

Eigentlich müsste es simple sein,
ich aber hab schon geschlagene 3 Stunden
mit dem Problem gekämpft.

Könnte mir einer von Euch erklären,
wie ich das hinbekomme?

Danke schon mal.
Angehängte Dateien
Dateityp: exe matriceseditor.exe (239,4 KB, 1x aufgerufen)
CU

DRPEnc
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 00:01
Hier im Forum suchenStringGrid!!!
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#3

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 00:05
bzw. Erstell die Edit's dynamisch.

Delphi-Quellcode:
type
  TForm = ...
  private
    aM1 : array [0..?, 0..?] of TEdit;
    ...
  end;


FormCreate

begin
  for y := 0 to ? do
      for x := 0 to ? do
          begin
            fTmp := TEdit.Create(Self);
            fTmp.Parent := Self;
            fTmp.SetBounds( ??? );
            aM1[x, y] := fTmp;
          end;
end;
Und dann sollte das Lesen mittels

GetLine <- Muss selbst geschrieben werden
SplitLine <- Muss selbst geschrieben werden

in einer geschachtelte For to do lösbar sein.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
franz

Registriert seit: 23. Dez 2003
Ort: Bad Waldsee
112 Beiträge
 
Delphi 5 Professional
 
#4

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 00:12
Hi,

erst mal tief durchathmen. Ich weiß ja nicht, wie viel du weißt.

Du könntest z. B. die Dateien zuerst in ein TStringList laden und anschließend aus dieser, Zeile für Zeile, die Zahlen auslesen.

Delphi-Quellcode:
var
  myList: TStringList;
begin
  myList := TStringList.Create;
  try
    myList.LoadFormFile('Dateiname');

    // Zeilen auslesen
  finally
    myList.Free;
  end;
end;
Zum Auslesen verwendest du am Besten "AnsiPos" und ermittelst damit die einzelnen Zahlen. Anschließend löscht du mit "Delete" den bereits eingelesenen Wert aus der aktuellen Zeile, damit du "AnsiPos" für die nächste Zahl verwenden kannst. Das ganze muss auch noch in einer Schleife für jede Zeile geschehen.

Übrigens kannst du mit [] auf die einzelnen Zeilen zugreifen z. B. myList[0] für die erste Zeile.

Allerdings versuchts du dein Problem sehr umständlich zu lösen, lass es doch erst gar nicht so weit kommen und verwende die Komponente TStringGrid.
  Mit Zitat antworten Zitat
DRPEnc

Registriert seit: 20. Feb 2004
Ort: Noch unterm Mond
126 Beiträge
 
#5

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 00:23
Die Edits sind ja steigend nummeriert.
Kann man nicht irgendwie Zeichen 1 ist Edit1, Zeichen 3 ist Edit2, Zeichen 5 ist Edit 3 etc. lesen
und Edit1 ist Zeichen 1 + ',', Edit2 ist Zeichen 3 +',', Edit 3 ist Zeichen 5 + ',' etc schreiben?
CU

DRPEnc
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 00:39
Suche mal in der OH nach Hier im Forum suchenPosEx (liegt in der Unit StrUtils).
Das löschen des zuvor gefundenen Teilstrings ist doch vollkomen unnötig.
Du lädst dir die Datei in eine Hier im Forum suchenStringList und läufst dann durch jede Zeile.
Pro Zeile suchst du dir mit PosEx das ',' und gibst dem 3. Parameter die zuvor gefundene Position.

Wenn du für jeden gefundenen Wert eine numerische Variable hochzählst, hast du gleich den Name des Edits.
Mit Hier im Forum suchenfindcomponent kannst du ihm dann den Wert zuweisen. (du kannst die Hier im Forum suchenEdits dynamisch erzeugen wenn sich die Anzahl der Werte insgesamt oder pro Zeile unterscheidet)

Den vorherigen Absatz kannst du dir aber sparen indem du ein Hier im Forum suchenStringGrid nimmst!
  Mit Zitat antworten Zitat
DRPEnc

Registriert seit: 20. Feb 2004
Ort: Noch unterm Mond
126 Beiträge
 
#7

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 00:45
Stringgrid ...

Ich hab mal das Project mit zwei Stringgrids ausgestattet.
Nur kann ich da überhaupt nichts editieren gar was in die Zellen schreiben.

Vieleicht könntest Du mir ein Beispiel erstellen, damit ich weis, wie ich es umsetzen könnte.

Denke so an ein Project mit dieser abgespeckten DRPQMAT:

Code:
1,2,
3,4
Die dann wie auch immer eingelesen wird.
Ich werde mir morgen die Tips und Links aus deinem letzen Post anschauen
und sehen ob ichs auf die Reihe bekomme.

Hier noch mal das Project mit Stringgrids. (Hatte ich auch zuerst im Sinn, konnte aber wie gesagt doch nichts
damit anfangen...)

Gute Nacht Euch allen.
Angehängte Dateien
Dateityp: exe matgrind.exe (68,3 KB, 3x aufgerufen)
CU

DRPEnc
  Mit Zitat antworten Zitat
DRPEnc

Registriert seit: 20. Feb 2004
Ort: Noch unterm Mond
126 Beiträge
 
#8

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 11:56
Das mit dem Speichern hab ich gelöst. Nun fehlt mir noch das Laden...

Mit diesem Code bekomm ich alle in eine Zeile ohne den , und Leerzeichen.

(Trim(StringReplace(form1.ListInter.Items.Text, #13#10, '', [rfReplaceAll])) Nun müsste es doch einfacher sein die einzelnen Zeichen den Edit zuzuordnen.

Zeichen1:=Edit1.text;
Zeichen2:=Edit2.text;
...
Zeichen64:=Edit64.text;

Die Frage ist noch wie...
Angehängte Dateien
Dateityp: exe matriceseditor0.2.exe (243,2 KB, 1x aufgerufen)
CU

DRPEnc
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 13:21
Editieren der Werte im Grid ist doch easy!
Schau dir mal die Options des StringGrids im OI an. Da wirst du über goEditing & goAlwaysShowEditor stolpern.
Das sind genau die Optionen, die dich interessieren.

Hier noch ein wenig code, der dir Laden & Speichern im Grid zeigen soll.

Delphi-Quellcode:
Procedure load_Grid(Grid: TStringGrid);
Var
  X, Y, ActPos, PrevPos : Integer;
  sl : TStrings;
Begin
  If Not OpenDialog1.Execute Then Exit;
  sl := TStringList.Create;
  Try
    // Öffne Datei in StringList
    sl.LoadFromFile(OpenDialog1.FileName);
    // laufe durch die sl
    For Y := 0 To pred(sl.Count) Do
    Begin
      // Spalte 0
      X := 0;

      PrevPos := 1;
      // suche das erste ","
      ActPos := PosEx(',', Sl[Y], PrevPos);
      // verlasse die Schleife wenn kein "," mehr gefunden wurde
      While ActPos > 0 Do
      Begin
        // schreibe in die Zelle den Text zwischen dem vorherigen "," und dem gefundenen ","
        Grid.Cells[X, Y] := Copy(sl[Y], PrevPos, (ActPos - PrevPos));
        // Postion des letzten Kommas
        PrevPos := succ(ActPos);
        // suche das nächste ","
        ActPos := PosEx(',', Sl[Y], PrevPos);
        inc(X);
      End;
      // zum Schluss noch den Text ab dem zuletzt gefundenen Komma in die Zelle
      Grid.Cells[X, Y] := Copy(sl[Y], PrevPos, Length(sl[Y]));

    End;
  Finally
    // Freigeben der sl
    FreeAndNil(SL);
  End;
End;

Procedure save_Grid(Grid: TStringGrid);
Var
  X, Y : Integer;
  sl : TStrings;
  TempStr : String;
Begin
  If Not SaveDialog1.Execute Then Exit;
  sl := TStringList.Create;
  Try
    With Grid Do
      For Y := 0 To pred(Grid.RowCount) Do
      Begin
        // Leeren des TempStr vor jeder Zeile
        TempStr := '';
        For X := 0 To pred(Grid.ColCount) Do
          TempStr := TempStr + Trim(Cells[X, Y]) + ',';

        // Hinzufügen von TempStr zur sl
        // in der letzten Zeile muss das letzte Komma abgeschnitten werden
        If Y = pred(Grid.RowCount) Then
          sl.Add(Copy(TempStr, 1, Length(TempStr) - 1))
        Else
          sl.Add(TempStr);
      End;

    // Speichern der StringList
    sl.SaveToFile(SaveDialog1.FileName);
  Finally
    // Freigeben der sl
    FreeAndNil(SL);
  End;
End;
Miniaturansicht angehängter Grafiken
drpenc001.jpg  
  Mit Zitat antworten Zitat
DRPEnc

Registriert seit: 20. Feb 2004
Ort: Noch unterm Mond
126 Beiträge
 
#10

Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)

  Alt 23. Mär 2004, 13:27
Delphi-Quellcode:
if not OpenDialog1.execute then Exit;
Listintrain.Items.LoadFromFile(OpenDialog1.FileName);
Edit129.text:=(Trim(StringReplace(Listintrain.Items.Text, #13, '', [rfReplaceAll]))) ;
Erzeugt eine Edit mit folgendem Inhalt:

1,2,3,4,5,6,...,64

Nun müsste ich die einzelnen Zahlen vor jedem , in eine Edit schreiben können. Muss mir mal PosEx näher anschauen...
CU

DRPEnc
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 14:56 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