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 2 von 3     12 3      
DRPEnc

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

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

  Alt 23. Mär 2004, 12:39
@ Robert_G: Schönes Foto!

Hab aber bei mir noch ein paar Probleme Deinen Code einzubauen.
Er meckert bei PosEx und Grind.

Hier ist mein Ansatz, denke aber, dass diese komplett falsch ist:

Delphi-Quellcode:
unit MatGrind;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    StringGrid2: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
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 TForm1.Button2Click(Sender: TObject);
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;

end.
CU

DRPEnc
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#12

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

  Alt 23. Mär 2004, 12:46
Zitat von Robert_G:
Suche mal in der OH nach POSEX (liegt in der Unit StrUtils).
  Mit Zitat antworten Zitat
DRPEnc

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

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

  Alt 23. Mär 2004, 13:17
Werd ich machen ...
CU

DRPEnc
  Mit Zitat antworten Zitat
DRPEnc

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

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

  Alt 23. Mär 2004, 13:20
Code:
Returns the index value of a substring.

Unit

StrUtils

Category

string handling routines

Delphi syntax:

function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;

C++ syntax:

extern PACKAGE int __fastcall PosEx(const AnsiString SubStr, const AnsiString S, unsigned Offset = 1);

Description

PosEx returns the index of SubStr in S, beginning the search at Offset. If Offset is 1 (default), PosEx is equivalent to Pos.

PosEx returns 0 if SubStr is not found, if Offset is greater than the length of S, or if Offset is less than 1.
Das hab ich gefunden. Nur wenn ich Deinen Code einbinde meckert Delphi wegen dem OpenDialog1. Wieso eigentlich?
CU

DRPEnc
  Mit Zitat antworten Zitat
DRPEnc

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

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

  Alt 23. Mär 2004, 13:25
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
If Not OpenDialog1.Execute Then Exit;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
If Not SaveDialog1.Execute Then Exit;
end;

function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
 begin
 //
 end;
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;


end.
Nun hab ich zwar keinen Fehler mehr, aber die Function ist ohne Function... Desweiteren musste ich die Load und Savefunctionen ausschalten. Irgendwie bekomme ich die Produce load/save_Grind nicht in mein Brain.
Kannst Du mir ein Bespiel posten?
CU

DRPEnc
  Mit Zitat antworten Zitat
DRPEnc

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

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

  Alt 23. Mär 2004, 13:50
Delphi-Quellcode:
function PosEx(Substr: string; S: string; P: Integer): Integer;
begin
  if P <= 0 then Result := 0
  else Result := Pos(Substr, Copy(S, P, Length(S)));
  if Result <> 0 then Result := Result + P - 1;
end;
Die komplette Function hab ich jetzt gefunden. Nur wie bring ich load/save_Grind die Open/Save Dialoge bei?
CU

DRPEnc
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#17

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

  Alt 23. Mär 2004, 14:03
Indem du sie einfach auf's Form ziehst.
  Mit Zitat antworten Zitat
DRPEnc

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

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

  Alt 23. Mär 2004, 14:20
K, nochmal von vorne.

So bin ich vorgegangen:

Neue Application erstellt.
Zwei groupboxes mit titel 'Intra Matrix:' und 'Inter Matrix:' erstellt.
Dort hinein jeweils eine StringGrind.
Fünf Buttons erstellt. Auf jeden doppelgeklickt.
Zwei Open und zwei SaveDialoge auf die Form geklatscht.
Diese mit den Save und Load Buttons verknüpft.
Die anderen mit // dummies ausgestattet.
PosEx Function in den Quellcode kopiert.
Deinen Quellcode hineinkopiert.

Resultat:

Findet die Save und Load Dialoge nicht.
Wenn ich die jeweiligen Zeilen in Deinem Code deactiviere kann ichs compilen.

Kannst Du mir nun sagen, wo ich was falschgemacht habe? Weil irgendwie tut das ganze schon weh...
Angehängte Dateien
Dateityp: exe matgrind2.exe (256,2 KB, 2x aufgerufen)
CU

DRPEnc
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#19

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

  Alt 23. Mär 2004, 14:22
Kannst du .rar oder .zip archive anhängen? Ich kriege von selbstentpackenden immer Ausschlag.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#20

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

  Alt 23. Mär 2004, 14:31
Du brauchst nur einen SaveDialg & einen OpenDialog!
Ich habe sie bei mir einfach SaveDialog1 & OpenDialog1 genannt, du kannst doch den Code soweit anpassen, oder nicht?

Edit: ich habe dir das Projekt angehängt.
Falls du dich mit den beiden Dialogen nicht auskennst, schau dir mal im OI die Einstellungen Filter, FilterIndex & DefaultExt an (natürlich auch in der OH ). Schaden kann's nix...
Angehängte Dateien
Dateityp: zip matriceseditor.zip (6,3 KB, 3x aufgerufen)
  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 18:50 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